2016-08-16 35 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时更好。 –

相关问题