2016-08-16 62 views
0

我正在用Karma/Jasmine做離子應用程序的單元測試。我有一個.js稱爲initApp.js與此代碼:Karma + Jasmine + Ionic併發性

function initFactoryString() { 
    if (angular.isUndefined(thiz.string_list)) { 
     $http.get(url + 'strings/strings.json').success(function (response) { 
      $rootScope.static_strings = response; 
     }); 
    } 
}; 

ionic.Platform.ready(function() { 
    initFactoryString(); 
}); 

initFactoryString()加載與應用程序的字符串一個JSON文件。在另一方面,我有這樣一個web服務工廠茉莉測試與規格:

it('Petición sin fechas', function() { 
     $httpBackend.expectGET('urlService').respond('dataResponse'); 
     $webServices.getAvailableDates(1234); 
     $httpBackend.flush(); 
}); 

如果我執行噶,出現此錯誤:

Error: Unexpected request: GET strings/strings.json 
Expected GET urlService 

很明顯,這個問題是關於JS因爲initApp.js是在我的茉莉花測試之前執行的,但是在測試運行期間解決了響應。在測試的情況下,我該怎麼辦,禁用initFactoryString()調用automaticaly?

+0

您應該模仿'$ http.get(網址+ '串/ strings.json')'reqyest或存根'ionic.Platform.ready'。像'initApp.js'這樣的文件根本不應該包含在這個測試中(也可能是Ionic)。 – estus

回答

0

可以使用

$httpBackend.when('GET','urlService').respond('dataResponse'); 
+0

你介意添加一個解釋讓我們理解你的代碼的作用嗎? – gsnedders

+0

感謝您的回覆,我解決了這個問題:var strings = readJSON('www/strings/strings.json'); $ httpBackend.when('GET','strings/strings.json')。respond(strings);' –

+0

「當你是可以打一個http呼叫的條件,而預期你必須打一個電話,因爲你有一個if條件,所以你可能會或可能不會做一個http調用,這就是爲什麼在條件語句中使用when時更好。 –

相關問題