2016-10-08 4 views
1

Есть ли способ, чтобы проверить что-то подобное с Jest:Async тесты с Jest (без Promises)

function hello(callback) { 
    someNonPromiseBasedAPI(callback); 
} 

Что-то вроде done()/waitsFor() в Жасмин

В шутя состояний документации, что для тестирования асинхр функция должна вернуть Promise, но я не хочу изменять свой код в соответствии с тестом.

ответ

0

Просто издеваются из someNonPromiseBasedAPI

jest.mock('./path/to/someNonPromiseBasedAPI', (cb)=> cb('test')) 
const cb = jest.fn() 
const result = hello(cb) 
expect(cb).toHaveBeenCalledWith('test') 

Это заменить реализацию someNonPromiseBasedAPI с функцией, которая просто вызвать функцию обратного вызова с 'test'. В вашем тесте вы создаете шпиона, который передает его в функцию hello. Используется макет и вызов шпиона с помощью 'test'. Затем просто проверьте, что шпион был вызван с ожидаемым аргументом.

0

Jest использует жасмин под капотом, поэтому вы можете использовать обратный вызов done/done.fail, например.

it('says hello', done => { 
    hello((err, result) => { 
     if (err) return done.fail(err); 
     expect(result).toBe('hello'); 
     done(); 
    }); 
}); 
Смежные вопросы