我正在维护一个类似于:
的旧项目beforeEach(angular.mock.module('project'));
beforeEach(angular.mock.module('project.mocks'));
在2000次测试中的每一次测试之前。 是否可以在开始时加载此模块一次,我尝试过:
beforeAll(angular.mock.module('project'));
beforeAll(angular.mock.module('project.mocks'));
但它似乎没有起作用。
答案 0 :(得分:0)
beforeAll
因为ngMock
uses beforeEach
设置了规格注入器而无法工作。
可以做
beforeAll(angular.mock.module('project'));
如果beforeEach
替换为beforeAll
中的ngMock
。但它肯定不应该如此,因为喷射器应该在每个规格之后被拆除。
固定框架的问题通常表明设计存在缺陷,并与建议的使用方案相冲突。在这种情况下,问题是单个Angular模块。 Angular应用程序不应该像这样进行测试,这就是为什么缺少请求的功能并且无法顺利实现的原因。
当加载整个应用程序模块时,不能单独测试这些单元,这与单元测试的概念形成对比。可重用性和可测试性是多个Angular模块的关注点。
当应用程序单元极其分离为单独的模块
时angular.module('project', ['project.some', 'ui.router', ...]);
angular.module('project.some', ['project.some.someCtrl', 'project.some.someSvc', 'ui.router']);
angular.module('project.some.someCtrl', []).controller('SomeController', ...);
模块在测试中对彼此的影响不受限制,可以任意组合加载和模拟。