Jest là JavaScript testing framework từ Meta, phổ biến nhất trong hệ sinh thái JS — zero-config với Create React App và Next.js, hỗ trợ TypeScript qua ts-jest hoặc babel-jest.
Tính năng chính:
- Test isolation — mỗi test file chạy trong environment riêng (jsdom hoặc node), state không rò rỉ giữa các file.
- Mocking —
jest.fn(),jest.mock(),jest.spyOn()để mock function, module, timer (jest.useFakeTimers). - Matchers —
toBe(===),toEqual(so sánh sâu),toThrow,toHaveBeenCalledWith,resolves/rejectscho async. - Snapshot testing — serialize output và so sánh với file
.snapđể phát hiện thay đổi ngoài dự kiến. - Coverage — flag
--coveragesinh báo cáo statements/branches/functions/lines. - Watch mode —
--watchchỉ chạy lại test bị ảnh hưởng bởi file thay đổi;--watchAllchạy lại toàn bộ mỗi lần có thay đổi. - Setup —
setupFilesAfterEnvtrongjest.config.jsđể cấu hình Testing Library, mock global API.
Thường dùng kèm React Testing Library (render, screen, userEvent) để test hành vi người dùng thay vì implementation details.