0
这个问题不是关于包括服务测试或提供替代服务的模拟。注入公用事业服务给茉莉花测试
现状:
我想测试是有关分析一组属性,并通过getter函数提供该信息的工厂。下面的伪代码描述了现在是正确的发生(supprisingly它的工作原理,但它是相当哈克动态创建测试根据数据长度)。
...
describe('fancyTest', function() {
// 1
beforeEach(function() {
// 7
module('app');
inject(function($injector) {
// 8
Factory = $injector.get('app.ToTestFactory');
UtilService = $injector.get('app.Util'); // bad, as to late...
});
});
// 2
describe('dataTest', function() {
// 3
// Goal: data = UtilService.getData('dataset1');
data = [{id:'test1'}, {id:'test2'}];
for (i = 0, l = data.length; i < l; i += 1) {
test(data[i]);
}
function test(properties) {
// 4
describe('datatest #' + i, function() {
var elem;
// 5
beforeEach(function() {
// 9
elem = new Factory(properties)
});
// 6
it('should provide the correct id', function() {
// 10
expect(elem.id()).toBe(properties.id);
});
...
});
}
}
...
}
的UtilService.getData()是一个简单的方法来读取数据超出了执行测试时仅注入的一些常量。这可能很重要,我不希望异步加载它们。
问题:
茉莉花框架有一个相当uninituitive工作流程和第一次运行和初始化所有描述块,它贯穿于beforeEach之前。该订单写在评论中。
在数据循环运行之前,我没有机会注入UtilService吗?
感谢您的帮助!
这只是另一种如何编写服务注入的方法。这并不影响茉莉花的执行顺序。注入仍然以#8执行,因此在#3之后,我需要使用Util-Service。有没有办法在Karma配置中预定义Util服务?或者你的意思是指定必要的* .js文件的文件列表?问题不在于正确注入服务,而是在beforeEach()之前注入服务。 –