我在我的角度应用程序中添加了一些身份验证逻辑,最初调用包装webapi的服务在app.run函数中执行,如下所示:
myApp.run(function ($rootScope, $location, myService) {
myService.getCurrentUser().then(function (promise) {
//reroute to either access denied or the start page when access is verified.
});
// register listener to watch route changes
$rootScope.$on("$routeChangeStart", function (event, next, current) {
//check access
});
});
在此之后我的所有单元测试都破了,因为在创建app模块之前我不知道如何注入模拟版本的myService。我在一个单独的模块中考虑了服务和模拟服务,因此我可以在创建实际应用程序之前创建它。像这样:
angular.mock.module('ServiceModule');
angular.mock.module('EArkivApp', function ($provide, myMockedService) {
$provide.value('myService', myMockedService);
});
但这不起作用,它抱怨" myMockedService" (它是ServiceModule的一部分)是一个未知的提供者。你对我应该如何解决这个问题有什么好的建议吗?
答案 0 :(得分:0)
你能为我们提供一个jsfiddle吗?
同时,如果您使用的是Karma,那么您可以使用以下内容:
/*global describe, beforeEach, module, inject, it, expect*/
describe('Controller: MyCtrl', function () {
'use strict';
// load the controller's module
beforeEach(module('myApp'));
var MyCtrl,
scope,
modalInstance;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope, myMockedService) {
scope = $rootScope.$new();
modalInstance = _$modal_.open({
templateUrl: 'views/my-template.html'
});
MyCtrl = $controller('MyCtrl', {
$scope: scope,
$myMockedService: myMockedService
});
}));
it('should be true', function () {
expect(true).toBe(true);
});
});
顺便说一句,我通过使用Yeoman脚手架来学习这个:)