Snapshot testing serialize output (component render, JSON object, string) vào file .snap — lần chạy sau so sánh với snapshot đã lưu, fail nếu có thay đổi.
- Update — khi thay đổi là có chủ đích:
jest -u(--updateSnapshot) cập nhật tất cả; kết hợp--testNamePatternđể giới hạn. - Inline snapshot —
toMatchInlineSnapshot()lưu ngay trong test file thay vì file.snapriêng — dễ review trong PR nhưng làm file test dài. - Nên dùng — UI component ổn định ít thay đổi (Button, Card, Input), cấu trúc dữ liệu serializable, shape của API response.
- Không nên — component thay đổi thường xuyên (update snapshot mỗi PR không còn ý nghĩa), nội dung động (timestamp, random ID — phải mock), business logic phức tạp (assertion tường minh tốt hơn).
- Rủi ro — dev chạy update mà không review diff → snapshot test thành 'rubber stamp'. Nên kết hợp snapshot với assertion tường minh cho thuộc tính quan trọng.
- Custom serializer —
jest.addSnapshotSerializer()format output cho object tùy biến.