2013-10-04 82 views
0

無法弄清楚如何使控制器測試正常工作。我正在玩ngStart種子項目。所以我分叉了存儲庫(https://github.com/Havrl/ngStart)並且想要創建一個非常基本的單元測試。無法使控制器測試與AngularJS +一起使用RequireJS

我控制器測試文件:

define(function() { 
"use strict"; 
describe("the contactcontroller", function() { 
    var contactController, scope; 

    beforeEach(function() { 
     module("contact"); 

     inject(["ContactController", function (_contactController) { 
      contactController = _contactController; 
     }]); 
    }); 


    it("should give me true", function() { 
     expect(true).toBe(true); 
    }); 
}); 

}); 

但是,這是行不通的。

我錯過了什麼?

回答

3

作爲回答以下問題控制器需要用新的範圍被手動實例:

how to test controllers created with angular.module().controller() in Angular.js using Mocha

此外您使用(其礦:-))項目限定內部路由控制器定義,而不是調用angular.controller(...)。

的缺點是控制器的名字都沒有已知angularJS(據我所知),所以從回答上面的代碼是行不通的:

ctrl = $controller("ContactController", {$scope: scope }); 

相反,你必須與requireJS明確地載入內部控制器您的測試文件並將函數賦予$ controller(..)調用,如下所示:

define(["ContactController"], function(ContactController) { 
"use strict"; 
describe("the contactcontroller", function() { 
    var contactController, scope; 

    beforeEach(function() { 
     module("contact"); 

     inject(["$rootScope", "$controller", function ($rootScope, $controller) { 
      scope = $rootScope.$new(); 
      contactController = $controller(ContactController, {$scope: scope}); 
     }]); 
    }); 

    .... 
}); 
相關問題