Я оказался в небольшом обратном обращении и испытал трудности с тестированием. Я надеюсь, что, возможно, некоторые из вас, ребята могли бы помочь мне, чтобы понять этоОбезвреживание с угловым обслуживанием
У меня есть 2 услуги и моя проблема с функцией fooService.getModel
app.service('fooService', function($q, barService){
return {
getModel: function(){
var deferred = $q.defer();
barService.get().then(function(response){
//my bareService mock allow me to reach up to this point
var result = {};
//some processing logic (if, else, etc)
console.log('resolve result') // I totally see this log
deferred.resolve(result); //this is what i want to test
});
return deferred.promise;
},
process: function(){
this.getModel().then(function(result){
if(result.success){
barService.post().then(function(){
//whatever i dont care
})
}
});
}
}
});
и barService, которые содержат 2 метода (получить и хранить) в основном $ http звонки.
для обслуживания бара У меня нет проблем с тестированием, потому что логика изолирована Я просто притворяюсь над вызовами $ httpBackend с разными ответами.
проблема, которую я обнаружил, когда хочу проверить возвращаемый объект результата в функции getModel.
мой тест что-то вроде
it('should test the returning model', inject(function(fooService){
barService.get.and.returnValue({then: function(successCallback){
successCallback({status:204, data: {}});
}});
var result;
fooService.getModel().then(function(response){
console.log('unit test then') // never gets in here
result = response;
});
//or anything related to the result object
expect(result).toEqual(mockedModel);
expect(result.success).toBeTruthy()
})
то, что я видел в том, что, если моя функция getModel будет выполнять HTTP-называть себя, я могу оценить результат моего модульного тестирования.
что-то вроде
getModel: function() {
var deferred = $q.defer();
$http.get(url).then(function (response) {
deferred.resolve(response);
})
.catch(function (response) {
deferred.reject(response);
});
return deferred.promise;
}
я бы определенно люблю извлекать функциональность моей barService к моему fooService, но это весьма вероятно, что rehusable почему я извлеченный в отдельную службу.
У вас есть представление, как я могу исправить свой модульный тест, чтобы оценить ответ на результат?
я надеюсь, что его четкие спасибо за помощь, ребята