я нашел несколько постов, которые показывает этот код как способ сделать блок асинхронной тестирования:AngularJS, мокко, Chai: тестирование услуг с обещаниями
Услуга:
angular.module('miservices', [])
.service('myAppServices', ['$http', 'httpcalls', function($http, httpcalls) {
this.getAccountType = function(){
return httpcalls.doGet('http://localhost:3010/...').then(function(data){
return data;
}, function(error){
...
});
};
...
Тест:
describe('testing myAppServices', function(){
beforeEach(module('smsApp'));
it('should handle names correctly', inject(function(myAppServices){
myAppServices.getAccountType()
.then(function(data) {
expect(data).equal({...});
});
...
Мы используем AngularJS, Mocha, Chai, и у нас установлен Sinon.
Тест никогда не доходит до части .then
, но почему?
Спасибо!
Проблема не обещание, а $ http. Вы должны высмеивать запросы, и вы этого не делаете. – estus
Вы хотите сказать httpBackend? – Ramon
Правильно. Если doGet и getAccountType ничего не делают для фактического ответа HTTP, вы можете пропустить эту спецификацию и высмеять getAccountType для других спецификаций. – estus