2
我是新編寫測試的angularjs.I有一個控制器,我根據約翰帕帕風格guide.I需要訪問這些方法在我的控制器?測試case.How做呢我使用jasmine.My示例代碼:如何在angularjs中編寫測試根據約翰帕帕風格指南
(function(){
angular.module('myapp')
.controller('AlertsController', AlertsController);
AlertsController.$inject = ['$scope', 'StorageFactory']
function AlertsController($scope, StorageFactory) {
var vm=this;
vm.createAlert=createAlert();
function createAlert(){
//function code
}
})
和我的測試如下:
'use strict';
describe('Controller: AlertsController', function() {
var AlertsController, scope, StorageFactory;
beforeEach(module('myapp'));
beforeEach(inject(function(_$controller_, _StorageFactory_, _$rootScope_) {
scope = _$rootScope_.$new();
AlertsController = _$controller_;
StorageFactory = _StorageFactory_;
}));
var createController = function() {
AlertsController('AlertsController', {
'$scope': scope,
'StorageFactory': StorageFactory
});
};
it('should create an alert', function() {
spyOn(StorageFactory, 'isLoggedIn').and.callFake(function() {
return true;
});
createController();
expect(AlertsController).toBeDefined();
AlertsController.createAlert();
});
});
正在以下錯誤:
TypeError: undefined is not a constructor (evaluating 'AlertsController.createAlert()') in /Users/Ramya/Documents/panitr_mobile/test/spec/controllers/AlertsCtrlSpec.js (line 57)
at /Users/Ramya/Documents/panitr_mobile/test/spec/controllers/AlertsCtrlSpec.js:57:37
PhantomJS 2.0.0 (Mac OS X 0.0.0): Executed 2 of 2 (1 FAILED) (0 secs/0.242 secPhantomJS 2.0.0 (Mac OS X 0.0.0): Executed 2 of 2 (1 FAILED) (0.054 secs/0.242 secs)
我需要訪問測試中的createAlert方法,你能告訴我怎麼做嗎? – Ramya
@Ramya請參閱更新。 –
我試過你的更新答案,但得到錯誤「預計未定義爲真」。 – Ramya