У меня есть метод в службе, который требует выждать 5000 мс перед возвратом. Мне нужно провести модульное тестирование этого метода. Я хочу имитировать задержку, используя sinon fakeTimers
, потому что я не хочу, чтобы весь модульный тест действительно ждал 5000 мс. Но у меня 2 проблемы.
1) Тест зависает, как только использую sinon fakeTimers. Я ищу способ установить отметку 5000 мс, когда код достигнет линии задержки.
2) Как мне «подтвердить», что значение возвращается точно через 5000 мс, а не 4999 мс, а не 5001 мс? (это вообще возможно?)
class MyService {
async doSomething(){
await this.delay(5000)
return 'Done'
}
delay(millis: number) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, millis);
});
}
}
describe('My Service', ()=>{
it('should return done after 5s',async ()=>{
const clock = sinon.useFakeTimers(0)
clock.tick(5000)
const service = new MyService()
const ans = await service.doSomething()
expect(ans).to.equal('Done')
})
})