2013-11-20 39 views
3

我試圖獲得一個基本的單元測試工作,並正在運行到使用angular-mocks.js的問題。希望這段代碼能解釋我的情況。AngularJS與茉莉花測試無法在使用angular-mocks.js時調用「angular.mock.module」

describe("peconfigApp", function() { 

    beforeEach(function() { 
     angular.mock.module('peconfigApp'); 
    }); 

    describe("Binaries Controller", function() { 
     it("should work", function() { 
      expect(true).toBe(true); 
     }); 
    }); 

}); 

茉莉花結果錯誤:在代碼的不同部分

TypeError: Object #<Object> has no method 'module' 
    at null.<anonymous> (http://localhost:58141/Tests/js/controller-tests.js:4:22) 
    at jasmine.Block.execute (http://localhost:58141/Tests/lib/jasmine.js:1064:17) 

我已經放在警報,以驗證角mocks.js之前我的測試中裝載的裝載和運行,所以我敢肯定加載不是問題。

<script type="text/javascript" src="../lib/angular.min.js"></script> 
<script type="text/javascript" src="../lib/angular-mocks.js"></script> 
<script type="text/javascript" src="lib/jasmine.js"></script> 
<script type="text/javascript" src="lib/jasmine-html.js"></script> 
<script type="text/javascript" src="../js/controllers.js"></script> 
<script type="text/javascript" src="js/controller-tests.js"></script> 

回答

9

我在茉莉花加載後移動了角度嘲弄負載。

<script type="text/javascript" src="../lib/angular.min.js"></script> 
<script type="text/javascript" src="lib/jasmine.js"></script> 
<script type="text/javascript" src="lib/jasmine-html.js"></script> 
<script type="text/javascript" src="../lib/angular-mocks.js"></script> 
<script type="text/javascript" src="../js/controllers.js"></script> 
<script type="text/javascript" src="js/controller-tests.js"></script> 

這使它工作。愚蠢的問題,我一定在閱讀文檔和教程的時候錯過了這個地方。

1

爲了設置的module在單元測試中,你通常會做這樣的事情:

beforeEach(module('peconfigApp')); 

只要你的配置設置正確(在正確的文件拉)那應該允許你在測試中定位模塊。

The documentation on unit testing是相當不錯的,值得一讀。

希望這會有所幫助。

0

我只花了一個小時試圖讓茉莉花讀我的控制器等。一切都必須按照克里斯所說的正確順序。

我的index.html運行茉莉:

<html ng-app="myApp"> 
<body> 

    <link href="jasmine.css" rel="stylesheet" /> 

    <!-- Init Angular --> 
    <script src="../angular.min.js"></script> 
    <script src="../angular-resource.min.js"></script> 

    <!-- My code --> 
    <script src="../app/controller.js"></script> 
    <script src="../app/main.js"></script> 
    <script src="../app/service.js"></script> 

    <!-- Init Jasmine --> 
    <script src="../jasmine.js"></script> 
    <script src="../jasmine-html.js"></script> 
    <script src="../angular-mocks.js"></script> 

    <!-- Insert spec's--> 
    <script src="spec/controller.spec.js"></script> 

    <!-- And GO! --> 
    <script src="runner.js"></script> 

    <!-- A basic test to check "connectivity" --> 
    <div id="container" ng-controller="myCtrl"> 
     <h1>Say something... {{data.variablehere}}</h1> 
    </div> 
    <div id="HTMLReporter" class="jasmine_reporter"></div> 


</body> 

</html>