簡體   English   中英

Angular JS +茉莉花測試控制器

[英]Angular JS + jasmine testing controller

我在controllersSpec.coffee Angular App代碼中有一個簡單的測試:

describe 'Controllers', ->
  beforeEach ->
    angular.module 'app'
  describe 'MainCtrl', ->
    beforeEach inject ($controller, $rootScope) ->
      scope = $rootScope.$new()
      ctrl = $controller 'MainCtrl', $scope: scope
    it 'should be true', ->
      expect(true).toEqual(true)

和SpecRunner.html文件進行測試:

<html lang="eu">
  <head>
    <title>Angular Test Runner</title>
    <script src="../js/libs/jquery.js"></script>
    <script src="lib/jasmine.js"></script>
    <script src="lib/jasmine-html.js"></script>
    <script src="../js/libs/underscore.js"></script>
    <script src="../js/libs/angular.js"></script>
    <script src="lib/angular/angular-mocks.js"></script>
    <script src="lib/angular/angular-scenario.js" ng-autotest></script>
    <script src="../js/controllers.js"></script>
    <script src="controllersSpec.js"></script>
    <script type="text/javascript">
    (function() {
    var jasmineEnv = jasmine.getEnv();
    jasmineEnv.updateInterval = 1000;
        var htmlReporter = new jasmine.HtmlReporter();
    jasmineEnv.addReporter(htmlReporter);
    jasmineEnv.specFilter = function(spec) {
      return htmlReporter.specFilter(spec);
        };
    var currentWindowOnload = window.onload;
    window.onload = function() {
      if (currentWindowOnload) {
        currentWindowOnload();
          }
          execJasmine();
        };
        function execJasmine() {
       jasmineEnv.execute();
    }
    })();
    </script>
    </head>
    <body>
    </body>
</html>

拋出錯誤,關於angular-mock中的'$ modules':

TypeError: Cannot read property '$modules' of null
    at Object.workFn (http://localhost/lolobot/test/lib/angular/angular-mocks.js:1745:25)
    at Object.<anonymous> (http://localhost/lolobot/test/lib/angular/angular-scenario.js:24673:54)
    at Array.forEach (native)
    at Object.forEach (http://localhost/lolobot/test/lib/angular/angular-scenario.js:9538:11)

你可以幫我解決這個問題嗎? 這是我的第一個測試角應用程序。

我認為你需要一些Angular包。 我把整個套房都包括在我的跑步者里。 我不認為我實際上需要它們,但我試圖刪除一些並且失敗了。 具體來說,我有這些:

angular.js
angular-bootstrap.js
angular-cookies.js
angular-loader.js
angular-mocks.js
angular-resource.js
angular-sanitize.js

此外,在您的測試中,您可能希望擁有

controller = null
scope = null

在您describe塊中的任何其他內容之前。 否則,您的控制器和作用域最終會作為inject函數中的局部變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM