Jest Async Testing
Testing asynchronous code with Jest.
Promises
Return promise
test("async test", () => {
return fetchData().then(data => {
expect(data).toBe("value");
});
});
Using resolves
test("async test", () => {
return expect(fetchData()).resolves.toBe("value");
});
Using rejects
test("error test", () => {
return expect(fetchData()).rejects.toThrow();
});
Async/Await
Basic async test
test("async test", async () => {
const data = await fetchData();
expect(data).toBe("value");
});
Error handling
test("error test", async () => {
expect.assertions(1);
try {
await fetchData();
} catch (e) {
expect(e).toMatch("error");
}
});
Callbacks
Using done callback
test("callback test", done => {
function callback(data) {
expect(data).toBe("value");
done();
}
fetchData(callback);
});
Error with done
test("error test", done => {
fetchData((err, data) => {
expect(err).toBeNull();
done();
});
});
Setup & Teardown
Before/After each
beforeEach(() => {
initializeDatabase();
});
afterEach(() => {
clearDatabase();
});
Before/After all
beforeAll(() => {
return setupDatabase();
});
afterAll(() => {
return teardownDatabase();
});