angularjs - 如何在注入(inject)前模拟 Angular 模块?

标签 angularjs unit-testing testing dependency-injection

我的应用程序中有以下依赖项:

angular.module 'MyApplication.NetworkingModule', ['ngResource']
       .value  'NetworkingValues'

angular.module  'MyApplication.MyModule', []
       .factory 'MySpecificResource', ['NetworkingValues',   ...]
       .factory 'MyService',          ['MySpecificResource', ...]

因此 MySpecificResource 取决于 NetworkingValues

问题是我想在测试的资源中使用它们之前模拟其中的一些值。

这样做:

  beforeEach module 'MyApplication.NetworkingModule'
  beforeEach module 'MyApplication.MyModule'

导致 factory 被立即调用,我没有机会替换一些 NetworkingValues

beforeEach inject (@MyService, @NetworkingValues) ->

MyService 依赖于 MySpecificResource,它依赖于我想在测试前 stub 的 NetworkingValues

正确的做法是什么?

最佳答案

Have you tried something along these lines?

 var mockedValues;
 beforeEach(module(function($provide) {
        $provide.value('NetworkingValues',mockedValues);
 }));

 beforeEach(inject(function(_NetworkingValues_) {

    mockedValues = {....};

 }));

$provide 将提供您的模拟值而不是实际的网络值。

关于angularjs - 如何在注入(inject)前模拟 Angular 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28968906/

相关文章:

javascript - 为什么这在 Angular js 中有效

asp.net-mvc - 任何人都知道如何从我的 angularjs 中的 web.config 文件中读取配置

javascript - Angular.js 服务函数未定义

unit-testing - phpunit -coverage-html 报告路径

android - 模拟位置不适用于 Android Pie 及更高版本

json - 如何在 Robot Framework 中的同一个机器人文件中仅读取一次 JSON 并多次使用它

javascript - 如何在 Angular ui-grid 中实现外部过滤器?

java - 如何以可测试的方式实现责任链?

unit-testing - 如何模拟其中一种结构方法?

java - 模拟: how to unmock a method?