3
我被困了几个小时,因为我是Jasmine和Angularjs的新手。基本上,我有这个控制器。如何为角度控制器和服务编写茉莉花测试?
angular.module('toadlane.controllers', []).
controller('MainController', function($scope, $http, SomeService) {
var promise = SomeService.getObjects();
promise.then(function(data) {
if(data.length > 0) {
$scope.objs = data;
} else {
$scope.message = "Please come back soon";
}
});
});
我怎么能写茉莉花测试,以模拟SomeService存根出data
和模拟,如果有数据scope
的长度不应该是0,如果data
是[]消息应该是“请很快回来”。
'use strict';
describe('controllers', function() {
var scope, someService;
beforeEach(module('services'));
beforeEach(module('controllers'));
beforeEach(inject(function (SomeService) {
someService = SomeService;
var callback = jasmine.createSpy();
someService.getObjs().then(callback);
}));
it('should return some objs', inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
expect($controller('MainController', {$scope: scope, SomeService : someService})).toBeTruthy();
expect(scope.objs.length).toEqual(2);
}));
it('should return no objs', inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
expect($controller('MainController', {$scope: scope, SomeService : someService})).toBeTruthy();
expect(scope.message).toEqual("Please come back soon");
}));
});
测试还没有完成,因为我不知道如何存根then
从promise
任何帮助是非常赞赏。谢谢。
对不起,我现在不能提供更长的答案,但我会将'SomeService.getObjs'存根为一个假函数,它会返回由您控制的自定义承诺(由'$ q'完成)。 – 2013-04-27 20:45:26
非常感谢您的回复,但是如果您稍后可以给我示例代码。那简直太好了。 – toy 2013-04-27 20:57:42
另外我试图做到这一点,但我不知道如何存根回调函数参数。 – toy 2013-04-27 20:58:26