2016-10-08 79 views
1

有没有一种方法来测试像这样用玩笑:异步测试用玩笑(不承诺)

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