TP n°4 Les tests

Ajout des tests unitaires

src/services/gameService.test.js

import * as gameService from "./gameService"

describe("Game service", () => {
  test("should put camels from hand to herd", () => {
    // TODO
  })

  test("should draw cards", () => {
    // TODO
  })

  test("should init a deck", () => {
    // TODO
  })
})

ℹ️ La commande npm run test permet d’exécuter les tests.

ℹ️ Aidez-vous des fichiers src/routes/healthRouter.test.js et src/services/databaseService.test.js présent dans le projet.

ℹ️ Les fichiers doivent se terminer par .test.js pour que Jest les retrouve automatiquement.

ℹ️ N’oubliez pas de tester les cas nominaux ainsi que les cas d’erreurs.

ℹ️ Attention de vérifier que l’analyse de code statique (ESLint) ne révèle aucune erreur avec la commande npm run lint:fix.

Ajout des tests d’intégration

src/routes/gameRouter.test.js

import request from "supertest"
import app from "../app"
import lodash from "lodash"
import * as db from "../database"

// Prevent writing tests game to filesystem using src/database/__mocks__/index.js implementation
jest.mock("../database")

// Prevent shuffle for tests
jest.mock("lodash")
lodash.shuffle.mockImplementation(/* TODO */)

afterEach(() => {
  db.clear()
})

describe("Game router", () => {
  test("should create a game", async () => {
    const response = await request(app).post("/games").send({ name: "test" })
    // TODO
  })

  test("should return 400 if name not provided", async () => {
    const response = await request(app).post("/games").send({})
    // TODO
  })
  
  test("should return 400 if name is empty", async () => {
    const response = await request(app).post("/games").send({ name: "" })
    // TODO
  })
})

Maintenant que cette nouvelle fonctionnalité est testée, elle est enfin terminée 🎉. Si vous étiez en équipe, ce serait le moment de créer la merge-request afin de faire valider votre code par vos coéquipiers afin de l’intégrer dans l’application.

Comme vous êtes seul, vous pouvez merger votre branche avec git (git checkout master && git merge feature/create-game) ou via une merge-request.

Autres ressources

© Julien Usson - Année 2022/2023 - ZZ2 F5