V tomto případě asynchronních funkcí implmementujících svůj návrat skrze callback funkci.
Tohle by mohla být nějaká asynchronní funkce pro výpočet součtu:
// ./src/index.ts export default function callbackSumFunction(a: number, b: number, cb: (res: number) => void) { cb(a + b); }
V kódu nic nehledejte. Je to opravdu jen princip: funkce s několika parametry, kde posledním je callback funkce, která se provede po získání výsledku. V mém případě ihned, nicméně princip je jasný…
Jest test
// ./__tests_/index.ts import callbackSumFunction from '../src/index'; describe('sum function', () => { it('10 + 10 = 20', done => { // vytvorim si vlastni callback funkci, ve ktere testuji klasicky navratovou hodnotu function callback(data) { expect(data).toBe(20); done(); // dulezite! timhle ukoncim test } // volam testovanou funkci, ktere predavam ocekavane parametry a jako posledni callback funkci, kde mam vyhodnoceni testu callbackSumFunction(10, 10, callback); }); });
A tohle je na Jestu pěkné. Chová se přesně tak, jak byste čekali. Prostě zavoláte svou asynchronní funkci a v jejím callbacku provedete patřičný test. Hotovo.
Připojím snad jen kompaktnější zápis testovací funkce využívající arrow function.
// ./__tests_/index.ts import callbackSumFunction from '../src/index'; describe('sum function', () => { it('10 + 10 = 20', done => { callbackSumFunction(10, 10, res => { expect(res).toBe(20); done(); }); }); });