Jest Testing Guide
Essential Jest testing patterns and matchers.
Installation & Setup
Install Jest
npm install --save-dev jest
Add to package.json
"scripts": {
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage"
}
Run tests
npm test
Basic Test Structure
Simple test
test(adds 1 + 2 to equal 3, () => {
expect(1 + 2).toBe(3);
});
Describe block
describe(Calculator, () => {
test(addition works, () => {
expect(add(2, 3)).toBe(5);
});
});
Test aliases
it(works, () => {}) // same as test
Common Matchers
Equality
expect(value).toBe(5) // strict equality
expect(obj).toEqual({ a: 1 }) // deep equality
Truthiness
expect(value).toBeTruthy()
expect(value).toBeFalsy()
expect(value).toBeNull()
expect(value).toBeUndefined()
Numbers
expect(value).toBeGreaterThan(3)
expect(value).toBeLessThan(10)
expect(value).toBeCloseTo(0.3)
Strings
expect(str).toMatch(/pattern/)
expect(str).toContain(substring)
Arrays
expect(arr).toContain(item)
expect(arr).toHaveLength(3)
Async Testing
Promises
test(async test, () => {
return fetchData().then(data => {
expect(data).toBe(result);
});
});
Async/Await
test(async test, async () => {
const data = await fetchData();
expect(data).toBe(result);
});
Resolve/Reject
await expect(promise).resolves.toBe(value);
await expect(promise).rejects.toThrow(error);