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()之前注入服務。 –