Я использую шпионаж Jasmine (2.2.0), чтобы узнать, вызван ли какой-либо callback.
Тестовый код:
it('tests', function(done) {
var spy = jasmine.createSpy('mySpy');
objectUnderTest.someFunction(spy).then(function() {
expect(spy).toHaveBeenCalled();
done();
});
});
Это работает так, как ожидалось. Но теперь я добавляю второй уровень:
it('tests deeper', function(done) {
var spy = jasmine.createSpy('mySpy');
objectUnderTest.someFunction(spy).then(function() {
expect(spy).toHaveBeenCalled();
spy.reset();
return objectUnderTest.someFunction(spy);
}).then(function() {
expect(spy.toHaveBeenCalled());
expect(spy.callCount).toBe(1);
done();
});
});
Этот тест никогда не возвращается, потому что, по-видимому, обратный вызов done
никогда не вызывается. Если я удалю строку spy.reset()
, тест завершится, но, очевидно, не будет выполнено последнее ожидание. Однако поле callCount
кажется undefined
, а не 2
.