在我的app.config
中,我使用名爲ui-router-extras FutureStates的服務從REST調用的結果動態創建狀態。其中一個這樣做的副作用是,當我的測試運行,因爲我加載我的主要應用模塊中所有的人,所有的測試撥打電話到該服務,因此所有測試失敗,並嘲笑Angular和Jasmine中所有套件的全局HTTP請求
Error: Unexpected request: GET /api/v1/config
No more request expected
我可以將以下內容添加到我的測試套件中,並修復問題,並將此調用註冊到後端,以便期望它。
beforeEach(inject(function(_$httpBackend_){
_$httpBackend_.whenGET(/\/api\/v1\/config.*/).respond([]);
}));
問題是這需要添加到每個測試套件中,這在我的模塊化應用程序中是很多溼碼。我正在尋找的是一種爲所有測試全局定義這種期望的方法(無論是在業力全球文件中,或者我甚至可以解決服務/單行導入以放入我的套件中)或如果我的測試設置或app.config
的設置效率低下,則可以改善此問題。
什麼我試過到目前爲止
// Defined in a tests-global.js file listed in my karma files array
beforeEach(inject(function(_$httpBackend_){
_$httpBackend_.whenGET(/\/api\/v1\/req_params.*/).respond([]);
}));
其失敗Error: Injector already created, can not register a module!
因爲在我個人的測試套件我打電話beforeEach(module('x'));
使用該模塊的模塊,並且你不能做一個inject()
,經過。
我也試過
// Defined in a tests-global.js file listed in my karma files array
beforeEach(function() {
var $injector = angular.injector(['ngMock']);
$httpBackend = $injector.get('$httpBackend');
$httpBackend.whenGET(/\/api\/v1\/req_params.*/).respond([]);
});
產生任何其他錯誤,但還沒有解決Unexpected request
問題。
是否有任何方法來處理所有測試的期望,或者如果這是一個跡象表明我的測試結構設置的很糟糕,是否更好地構建我的代碼/測試?