profcfuhrmanets / log210-enonce-lab0

Laboratoire d'introduction aux technologies utilisées en LOG210
MIT License
0 stars 4 forks source link

Problème de nom de fichier pour 2 tests. Fichier test/new-test/redemarrerJeu-lab0.test.ts #56

Closed elainesoucy closed 2 years ago

elainesoucy commented 2 years ago

Deux tests ne passent pas avec npx jest, car ces deux tests appellent le fichier jeuRouteur-redemarrerJeu.test.ts qui n'existe pas. Le fichier est plutôt nommé jeuRouter-redemarrerJeu-lab0.test.ts dans le laboratoire des étudiants. image image

Solution :

remplacer la ligne 7 du fichier test/new-test/redemarrerJeu-lab0.test.ts pour const filename = path.join('test', 'routes', 'jeuRouter-redemarrerJeu-lab0.test.ts');

OU

renommer le fichier en faute en enlevant la partie -lab0 dans le nom de fichier (fichier test/routes/jeuRouter-redemarrerJeu-lab0.test.t)

La solution dépendra de la convention de nommage des fichiers. Est-ce que les tests de redemarrerJeu.ts devraient être appelés avec npx jest --colors --coverage "[^lab0].test.ts" ? Je crois que non, car nous sommes dans la partie Fonctionnalités (comme énoncé à la partie 10). Dans ce cas, la solution 2 sera préférée.

fuhrmanator commented 2 years ago

TL;DR Il ne faut pas renommer le fichier (tout est normalement OK si on suit la directive sur les noms). Cependant, on doit clarifier que les "tests de fonctionnalités" sont en fait les "tests de fonctionnalités du squelette de base" lorsqu'on parle des deux groupes de tests. Tout ce qui est "-lab0" est pour la documentation et "la fonctionnalité rajouté" (redémarrer). Pour le cas du jeu avec 3 dés, il s'agit d'un changement à la fonctionnalité de base, donc les tests de fonctionnalités de base évoluent. J'espère que cela sera moins mêlant. 😄


Le fichier test/new-test/redemarrerJeu-lab0.test.ts et le fichier qu'il test ont tous deux -lab0 dans leur nom. L'étudiant a dû changer ça quelque part.

import 'jest-extended';
import { readFileSync } from 'fs';
const path = require('path');

let content = ""
beforeAll(async () => {
  const filename = path.join('test', 'routes', 'jeuRouter-redemarrerJeu-lab0.test.ts');
  content = readFileSync(filename, 'utf-8');
});

describe('redemarrerJeu.test.ts', () => {
  it("should contain \"get('/api/v1/jeu/redemarrerJeu')\"", () => {
    expect(content.includes("get('/api/v1/jeu/redemarrerJeu')")).toBeTruthy();
  });

  it("devrait contenir un test pour jouer qui retourne 404 (après redemarrerJeu()", () => {
    expect(content.includes("/api/v1/jeu/jouer/")).toBeTruthy();
    expect(content.includes(".status).toBe(404)")).toBeTruthy();
  });
});

L'énoncé dit clairement de travailler avec le nom -lab0:

### 3. écrire des tests pour la fonctionnalité

- [ ] ajouter de nouveaux cas de test pour Redémarrer (Jest/SuperTest)

  - ouvrir le fichier `test/routes/jeuRouter-redemarrerJeu-lab0.test.ts`

... et plus tard encore avec -lab0:

- [ ] vérifier que les tests ne passent pas (Jest/SuperTest)
  `npx jest --colors jeuRouter-redemarrerJeu-lab0.test.ts` va indiquer `n failed`

et plus tard encore avec -lab0:

- [ ] vérifier que les tests pour redémarrerJeu passent: `npx jest --colors jeuRouter-redemarrerJeu-lab0.test.ts`. (Node.js)

Alors, c'est p-e mêlant par la suite:

- [ ] vérifier que TOUS les tests de fonctionnalités passent (Node.js)

  `npx jest --colors --coverage "[^lab0].test.ts"` devrait indiquer que tous les tests passent.

Cette commande va essentiellement ignorer la fonctionnalité redémarrer. Mais, on l'a testé explicitement avant.

Je dirais qu'il ne faut pas renommer le fichier (tout est normalement OK), mais qu'on clarifie que les "fonctionnalités" sont les "fonctionnalités du squelette de base".

À la fin, npx jest va exécuter tous les tests, y compris les fonctionnalités de base du squelette et celles ajoutées comme redémarrer.

elainesoucy commented 2 years ago

Votre version ne correspond pas à la version des étudiants. Voici ce que les étudiants ont dans le fichier test/new-test/redemarrerJeu-lab0.test.ts : image

Notez que la ligne 7 contient le nom de fichier jeuRouter-redemarrerJeu.test.ts, un fichier qui n'existe pas dans le répertoire du laboratoire 0 pour les étudiants. Néanmoins, le fichier jeuRouter-redemarrerJeu-lab0.test.ts existe dans le laboratoire des étudiants. Nous pouvons le constater dans la capture suivante du dossier test/routes : image

Ainsi, cela fait en sorte que vous n'éprouvez pas le problème que les étudiants ont avec le projet. La commande npx jest --colors --coverage donnera toujours deux tests en échec, soit ceux présentés dans la première capture, car le fichier jeuRouter-redemarrerJeu.test.ts n'existe pas dans le répertoire des étudiants. Pour corriger le problème tout en prenant en considération la convention de nommage des fichiers, la première solution que j'ai proposé fera l'affaire.

elainesoucy commented 2 years ago

Je vois qu'Yvan a apporté la modification dans le fichier en question il y a 4 jours, d'où le pourquoi vous n'aviez pas l'erreur, mais que tous les étudiants l'avaient (ils ont cloné le fichier il y a plus d'une semaine) : image

Je ferme l'issue puisque le problème est réglé pour la prochaine session.

fuhrmanator commented 2 years ago

Je veux l'ouvrir de nouveau car j'ai à modifié également le Readme pour la question de confusion pour les tests