AngularJS模块.run命令和e2e模拟

时间:2013-05-08 23:14:55

标签: angularjs angularjs-module

我正在为AngularJS进行一些E2E测试。

我已经实现了$ httpBackend ngMockE2E。

这很好用,但在某些情况下,在我的模拟完全设置之前就会发出HTTP请求。

模拟设置为:

  angular.module('Mock', ['ngMockE2E']).

    run(function($httpBackend) {

      $httpBackend.whenPOST('/path1').respond({ exampleresponse: 'valid' });
      $httpBackend.whenPOST('/path2').respond({ exampleresponse: 'valid' });

使用如下:

angular.module('Application', ['FirstDependency', 'Mock', 'ThirdDependency']);

但是,FirstDependency和ThirdDependency可以发出有时在Mock .run()块执行之前发生的HTTP请求。这会导致请求错误。

我是否正确设置了我的模拟?确保我的模拟以正确的顺序加载的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

这就是文档所说的:

Dependencies: 

Modules can list other modules as their dependencies.
Depending on a module implies that required module needs to be loaded
before the requiring module is loaded. In other words the
configuration blocks of the required modules execute before the
configuration blocks of the requiring module. The same is true for the
run blocks. Each module can only be loaded once, even if multiple
other modules require it.

然而,它没有说的是首先执行所有模块的配置块(依赖首先)和然后它将依次为每个模块连续执行所有其他块。有关这方面的说明,请看一下这个jsfiddle:

http://jsfiddle.net/9FJnZ/2/