2014-09-21 50 views
0

我的角度腳本是這樣的:

var app = angular.module("myApp", []); 



app.controller('TestController', function ($scope) { 
    $scope.test= "TEST"; 
}); 

我的測試文件看起來像這樣:

describe('first test', function() { 
var $scope; 

    beforeEach(function(){ 
    module('myApp'); 

    inject(function($rootScope, $controller) { 
     $scope = $rootScope.$new(); 
     ctrl = $controller('TestController', { 
      $scope: $scope 
     }); 
    }); 
    it('scope should have test', function() { 
    expect($scope.test).toEqual("TEST"); 
    }); 
}); 

該測試失敗,說$ scope.test未定義。我在Chrome中進行調試,發現$ scope有一堆屬性,但沒有一個是測試。我在網上瀏覽了幾個例子,它們看起來都很相似。我不太確定我在這裏做錯了什麼,我卡住了......我試圖添加$控制器注入,但我仍然有同樣的問題。

+1

如果你認爲你會得到'$ controller'? – PSL 2014-09-21 03:30:20

回答

1

您需要與$rootScope一起傳遞$controller service

inject(function($rootScope, $controller) { 
    $scope = $rootScope.$new(); 
    ctrl = $controller('TestController', { 
     $scope: $scope 
    }); 
}); 
+0

即使在添加$控制器後,我仍然遇到同樣的問題 – user3715648 2014-09-21 05:21:17

+0

調試時是否檢查控制器代碼是否被執行? (在控制器定義中添加console.log並驗證) – 2014-09-21 05:46:12

+0

不,它不是。我看到var app =「...」運行,但我的控制器代碼不是 – user3715648 2014-09-21 05:51:56