有没有办法用Jest测试这样的东西:
function hello(callback) {
someNonPromiseBasedAPI(callback);
}
像Jasmine中的done()
/ waitsFor()
Jest文档声明要测试异步函数,它必须返回一个Promise,但我不想修改我的代码以适应测试。
答案 0 :(得分: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'
调用间谍。然后测试间谍被称为预期参数。
答案 1 :(得分:0)
Jest在引擎盖下使用茉莉花,因此您可以自由使用done
/ done.fail
回调,例如。
it('says hello', done => {
hello((err, result) => {
if (err) return done.fail(err);
expect(result).toBe('hello');
done();
});
});