AngularJS如何避免在每次测试中执行app.run()?

时间:2015-08-05 19:14:56

标签: angularjs jasmine

我有一个角度应用程序,它在app.run中执行一些逻辑。它包括一些$http调用来加载config.json文件并在需要时恢复用户会话。

我正在使用Jasmine编写所有单元测试。今天,我已经意识到我在每个测试中调用run函数,因为在我正在做的每个描述的顶部:

beforeEach(module('myapp'));

这引起了我真正头痛的问题,因为到目前为止,我找到的唯一解决方法就是模拟我所有describes中提出请求的服务。这对我来说听起来非常不正确,甚至我认为我没有机会监视在运行阶段执行的这些服务。

但是,应用程序运行正常,据我所知,app.run()是进行这些调用的好地方。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

正如@KirillSlatin所指出的,解决方法是在几个模块中拆分您的应用程序。

这样,每个模块都可以执行自己的配置并运行块。只有模块的服务需要在需要时模拟运行块。

angular.module("app", ["app.core"]).config(function() {}).run(function(){});
angular.module("app.core", []).config(function() {}).run(function(){});

以下帖子中可以找到一些非常好的做法,许多人可能已经知道:github.com/johnpapa/angular-styleguide