Почему этот тест не срабатывает, говоря, что шпиона onSuccess
так и не был вызван?Почему этот асинхронный тест Жасмин не работает?
it('should correctly call the success callback',function(done)
{
const callbacks={
onSuccess:function()
{
console.log('OK');
done();
},
onError:function()
{
console.log('ERR');
done();
}
};
spyOn(callbacks,'onSuccess').and.callThrough();
spyOn(callbacks,'onError').and.callThrough();
doSomethingAsync(callbacks.onSuccess,callbacks.onError);
expect(callbacks.onSuccess).toHaveBeenCalled();
expect(callbacks.onError).not.toHaveBeenCalled();
});
При выполнении теста, я получаю сообщение об ошибке говорящее Expected spy onSuccess to have been called.
.
Прямо над этим, есть консольный журнал с надписью «ОК», что означает, что шпион был вызван и что он вызвал.
Вызываемые вызовы 'expect()' _before_ 'doSomethingAsync()' завершены, поэтому вам нужно как-то дождаться окончания. – robertklep
Хм, не дождаться, когда 'done()' будет вызван до оценки ожиданий? – Francisc
Нет, вызывая 'done' сигналы о завершении теста (включая любые утверждения). – robertklep