2015-04-23 17 views
4

這是我第一次嘗試使用Karma/Jasmine。我想用它來測試一個AngularJS應用程序。AngularJS Karma茉莉花錯誤:無法讀取未定義的屬性

這只是一個簡單的Hello World測試,以確保事情正常,但事實並非如此。

我想測試一個名爲InboxController的控制器。我已經定義了一個範圍變量:$ scope.greeting ='Hello World'。

我想在一個名爲controllers-test.js的單獨文件中測試它。

這是測試:

'use strict'; 

描述( '試驗控制器',函數(){

describe('InboxController', function() { 
    var scope; 

    beforeEach(angular.mock.module('myApp')); 

    beforeEach(angular.mock.inject(function($rootScope, $controller){ 
     scope = $rootScope.$new(); 
     $controller('InboxController', {$scope: scope}); 

    })); 

    it('should return Hello World', function() { 
     expect(scope.greeting).toBe('Hello World'); 
    }); 
}); 

});

我不斷收到一個錯誤:

無法讀取的未定義的屬性「問候」,它涉及回測試代碼scope.greeting。

噶配置:

files : [ 

      'bower_components/angular/angular.js', 
      'bower_components/angular-mocks/angular-mocks.js', 
      'bower_components/angular-resource/angular-resource.js', 
      'app.js', 
      'js/*.js', 
      'test/*.js' 
      ], 

InboxController:

app.controller('InboxController', function($rootScope, $scope, 
    $location, InboxService) { 

$scope.greeting = 'Hello World'; 

$rootScope.loggedIn = true; 

// Load Inbox 
$scope.loadInbox = function() { 

    $scope.emails = InboxService.getMessages().success(function(jsonData) { 

     $scope.emails = jsonData; 
    }); 
} 

// Delete email 
$scope.delete = function (id) { 
    InboxService.delete(id).success(function() { 

     $scope.loadInbox(); 
    }); 
}; 

$scope.loadInbox(); 

});

回答

2

自己解決了這個問題。我需要引用的業力配置文件中的所有角度的依賴關係:

files : [ 

      'bower_components/angular/angular.js', 
      'bower_components/angular-route/angular-route.js', 
      'bower_components/angular-sanitize/angular-sanitize.js', 
      'bower_components/angular-cookies/angular-cookies.js', 
      'bower_components/angular-bootstrap/ui-bootstrap.js', 
      'bower_components/angular-bootstrap/ui-bootstrap-tpls.js', 
      'bower_components/angular-mocks/angular-mocks.js', 
      'bower_components/angular-resource/angular-resource.js', 
      'app.js', 
      'js/*.js', 
      'test/*.js' 
      ], 

重要的是,這一次是第一位的:

bower_components/angular/angular.js 
相關問題