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.