有沒有一種方法來測試像這樣用玩笑:異步測試用玩笑(不承諾)
function hello(callback) {
someNonPromiseBasedAPI(callback);
}
喜歡的東西done()
在茉莉花
的玩笑文檔指出,測試異步/ waitsFor()
函數它必須返回一個Promise,但我不想修改我的代碼以適應測試。
有沒有一種方法來測試像這樣用玩笑:異步測試用玩笑(不承諾)
function hello(callback) {
someNonPromiseBasedAPI(callback);
}
喜歡的東西done()
在茉莉花
的玩笑文檔指出,測試異步/ waitsFor()
函數它必須返回一個Promise,但我不想修改我的代碼以適應測試。
只是模擬出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'
的間諜。然後,只要測試一下間諜是否被稱爲預期的論點。
Jest使用引擎蓋下的茉莉花,因此您可以自由使用done
/done.fail
回調,例如,
it('says hello', done => {
hello((err, result) => {
if (err) return done.fail(err);
expect(result).toBe('hello');
done();
});
});