5
如何模拟出一个简单的工厂在AngularJs中返回一个Karma
单元测试中的静态数据?Angularjs测试返回静态数据的简单工厂
我有这个简单的工厂,对于例如起见返回静态数据:
angular.module('conciergeApp.services')
.factory('CurrentUser', function() {
return {
id: 1,
hotel_id: 1,
}
});
我想知道怎么写了Karma
测试呢?
到目前为止,我有这样的代码,但ID不工作:
describe('ReplyCtrl', function() {
beforeEach(module('conciergeApp'));
beforeEach(module(function($provide) {
$provide.service('CurrentUser', function() {
return 1;
});
}));
//Getting reference of the mocked service
var mockUtilSvc;
inject(function(CurrentUser) {
mockUtilSvc = CurrentUser;
});
beforeEach(inject(function($rootScope, $controller) {
scope = $rootScope.$new();
ctrl = $controller('ReplyCtrl', {
$scope: scope
});
}));
it('should return value from mock dependency', inject(function(mockUtilSvc) {
expect(mockUtilSvc()).toEqual(1);
}));
});
这是我已经得到该错误消息:
Firefox 41.0.0 (Mac OS X 10.10.0) ReplyCtrl should return value from mock dependency FAILED
Error: [$injector:unpr] Unknown provider: mockUtilSvcProvider <- mockUtilSvc
Hist第一个'inject'也出错了。他应该在'beforeEach'前面加上' – Phil
@Phil True,我在步骤4中提到过它,可能不是很清楚。让我更新它。谢谢。 – PSL
@PSL很好的答案,并感谢您的详细解释。这样可以更清楚地了解这里发生的事情以及如何设置此模拟服务测试的逻辑。谢谢! –