使用Jest进行异步测试(没有Promises)

时间:2016-10-08 10:00:07

标签: jestjs

有没有办法用Jest测试这样的东西:

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

像Jasmine中的done() / waitsFor()

Jest文档声明要测试异步函数,它必须返回一个Promise,但我不想修改我的代码以适应测试。

2 个答案:

答案 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();
    });
});