CHAPITRE 05 / WEBFRONT
Tester et vérifier
Jasmine, contrôle de types et échecs utiles.
Un premier contrat vérifiable
Dans le terminal, lancez wf install jasmine-core@7.0.2. Créez tests/life.spec.js dans life-project avec ce test du format de la grille. Il vérifie le compactage côté JavaScript, pas le calcul C++ lui-même.
describe('the Life grid', () => {
it('packs 1024 cells into 128 bytes', () => {
const cells = new Uint8Array(32 * 32 / 8);
for (const i of [330, 331, 332])
cells[i >> 3] |= 1 << (i & 7);
expect(cells.length).toBe(128);
expect(cells[41]).toBe(0b00011100);
});
});Déclarer et exécuter
Ajoutez cette propriété à la racine du manifeste webfront.project.json, avec les virgules JSON nécessaires. wf init ne crée pas cette recette. Lancez wf test : Jasmine tourne dans la fenêtre, et un test en échec donne un statut non nul. Remplacez temporairement 128 par 127 pour vérifier que votre test sait échouer, puis rétablissez la valeur.
"test": {"specs": ["tests/life.spec.js"]}Vérifier les types
Créez tsconfig.json à la racine de life-project avec cette configuration. Installez ensuite les types et le compilateur avec les commandes suivantes. wf check utilise la version de TypeScript verrouillée par le projet.
{
"compilerOptions": {
"strict": true,
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "Bundler",
"jsx": "react-jsx",
"lib": ["ES2022", "DOM", "DOM.Iterable"],
"noEmit": true
},
"include": ["ui"]
}Installer le vérificateur
Le starter importe React et React DOM : leurs déclarations de types sont nécessaires au contrôle strict.
wf install typescript@5.9.3 @types/react@19.3.0 @types/react-dom@19.3.0
wf checkQuestion