Я застрял в тестах в Chai и Sinon. Как правило, я получил сервис с оболочкой для запроса xhr, и он возвращает обещания. Я пытался проверить это так:тестирование обещанного сервиса с Chai и Sinon
beforeEach(function() {
server = sinon.fakeServer.create();
});
afterEach(function() {
server.restore();
});
describe('task name', function() {
it('should respond with promise error callback', function(done) {
var spy1 = sinon.spy();
var spy2 = sinon.spy();
service.get('/someBadUrl').then(spy1, spy2);
server.respond();
done();
expect(spy2.calledOnce).to.be.true;
expect(sp2.args[0][1].response.to.equal({status: 404, text: 'Not Found'});
});
});
Мои заметки об этом:
// spy2 вызывается после того, как ожидают закончить утверждение
// пытались с var timer = sinon.useFakeTimers()
и timer.tick(510);
без результатов
// пытавшихся с Chai-а обещанное - не знаю, как использовать его :-(
// не может установить sinon-as-promised
только выбранные модули НПМ, доступные в моей среде
Любые идеи, как исправить этот код/протестировать этот сервисный модуль?
Вы звоните 'сделано()' перед вашими утверждениями, в то время как она должна быть вызвана, когда ваше испытание закончено полностью. Кроме того, 'service.get()' синхронно или асинхронно? – robertklep
@robertklep: Хорошо, я не знал о done() в конце. 'service.get' является асинхронным (обертка для D3 XHR) – cachaito