2016-08-11 4 views
1

Я пишу тест Jest для кода, который зависит от библиотеки websocket.Отключить Jest setTimeout mock

В библиотеке веб-раскладок издеваются. Я хочу отправить сообщение, дождаться завершения асинхронных действий и проверить ответ.

it('sends a message and gets a response',() => { 
    processor(ws).sendMessage() // do a bunch of async stuff, call websocket.sendMessage() 
    setTimeout(() => { 
    expect(ws.getResponse()).toEqual('all done') 
    }, 100) 
}) 

К сожалению, поскольку Jest mocks setTimeout, setTimeout терпит неудачу. Если я запустил jest.runAllTimers(), тайм-аут произойдет мгновенно, поэтому вы не получите сообщение.

Любая идея, как убедить шутить, чтобы разблокировать setTimeout или обходное решение Jasmine?

+0

Jest 15 появляется, чтобы отключить таймер иронизирует по умолчанию http://facebook.github.io/jest/blog/2016/09/01/jest-15.html –

ответ

3

Вы можете добавить следующий код перед тестовыми примерами. Это работает для меня в Jest v14.1.0 -

jest.useRealTimers()