【发布时间】:2014-05-19 07:34:08
【问题描述】:
我在我的 Angular 应用程序中添加了一些身份验证逻辑,最初对包装 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
});
});
在此之后,我的所有单元测试都失败了,因为我不知道如何在创建应用程序模块之前注入 myService 的模拟版本。我已经将服务和模拟服务分解为一个单独的模块,因此我可以在创建实际应用程序之前创建它。像这样:
angular.mock.module('ServiceModule');
angular.mock.module('EArkivApp', function ($provide, myMockedService) {
$provide.value('myService', myMockedService);
});
但是这不起作用,它抱怨“myMockedService”(它是 ServiceModule 的一部分)是一个未知的提供者。您对我应该如何解决这个问题有什么好的建议吗?
【问题讨论】:
-
我想你可以参考这篇关于angular module lazy loading的文章来寻求帮助
标签: javascript angularjs unit-testing mocking