Tester, c’est douter

function add(a, b) {
return a + b
}
describe("add", () => {
test("should add two numbers", () => {
expect(add(1, 1)).toEqual(2)
})
test("should add two negatives numbers", () => {
expect(add(-1, -1)).toEqual(-2)
})
})
describe("find all cars", () => {
test("should respond with a 200", async () => {
const response = await request(app).get("/cars")
expect(response.statusCode).toBe(200)
expect(response.body).toEqual([{...}, {...}])
})
})


On test puis on code de façon itérative
1. écrire un seul test qui décrit une partie du problème à résoudre
2. écrire juste assez de code pour que le test réussisse
3. vérifier que le test passe, ainsi que les autres tests existants
4. goto 1
Et si on a des effets de bords, on test pas ?
C’est une fonction de remplacement utilisé lors des tests. Très utile pour enlever les effets de bords lors des tests.
// foo.js
export function bar() {
return Math.random()
};
// foo.test.js
import { bar } from "./foo"
// Mock l'ensemble des fonctions du module
jest.mock('./foo');
bar();
// -> undefined (mock par défaut)
// Change l'implémentation de la fonction
bar.mockImplementation(() => 42);
bar();
// -> 42