2016-10-08 109 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(); 
    }); 
});