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