Le standard actuel
Vitest : successeur de Jest, équipe Vite. Rapide, JS moderne, quasi zéro config.
import { describe, it, expect, beforeEach } from 'vitest';
import { ShoppingCart } from './ShoppingCart.js';
describe('ShoppingCart', () => {
let cart;
beforeEach(() => {
cart = new ShoppingCart();
});
it('should start empty', () => {
expect(cart.items).toHaveLength(0);
expect(cart.total).toBe(0);
});
it('should add items correctly', () => {
cart.add({ name: 'Book', price: 20 });
cart.add({ name: 'Pen', price: 5 });
expect(cart.items).toHaveLength(2);
expect(cart.total).toBe(25);
});
it('should apply 10% discount for orders over 100', () => {
cart.add({ name: 'Laptop', price: 150 });
expect(cart.total).toBe(135);
});
});
Matchers courants
expect(value).toBe(42);
expect(value).toEqual({ a: 1 });
expect(value).toBeTruthy();
expect(fn).toThrow('error message');
expect(arr).toContain('item');
expect(spy).toHaveBeenCalledWith(42);
Important
Les tests trouvent des bugs et documentent. Un collègue lit le test et sait comment la fonction doit se comporter.
Astuce
Couvrez la logique métier : calculs, paiement, droits. 100 % partout est rarement rentable.