Aller au contenu principal

Création d'un environnement de test

Les tests d'intégration doivent se connecter à la base de données pour tester les différentes opérations CRUD. Évidemment, on veut faire cela dans un environnement contrôlé, unique à l'environnement de test.

De plus, pour contrôler l'état de la base de données en tout temps, on la réinitialisera avant chaque test. Vous ne voulez pas par mégarde réinitialiser votre base de données d'équipe.

Créer un fichier .env.test

  1. À la racine du projet, créez un fichier .env.test. Les tests sont exécutés dans un environnement node portant le nom de test.
  2. Ajoutez le support pour plusieurs fichiers d'environnement à la configuration. En ce moment, un seul fichier d'environnement est utilisé, soit .env. Cependant, en mode test, on veut utiliser une fichier d'environnement différent pour se connecter à une base de données différente.
src/app.module.ts
@Module({
imports: [
ConfigModule.forRoot({
envFilePath: process.env.NODE_ENV
? `.env.${process.env.NODE_ENV}`
: '.env',
}),
//...
info

Si le nom de l'environnement est précisé dans l'exécution de node, on récupère le fichier d'environnement associé. S'il n'est pas précisé, on prends seulement le fichier .env.

  1. Réinitialiser la base de données en environnement de test
src/app.module.ts
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env.DATABASE_HOST,
port: +process.env.DATABASE_PORT,
username: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME,
entities: [Projet, Issue, Utilisateur],
synchronize: true,
logging: true,
dropSchema: process.env.NODE_ENV === 'test'
}),
  1. Créer une base de données de test (ex.: houdini_test) dans votre serveur Postgres local.
  2. Modifier le fichier d'environnement de test pour utiliser votre base de données de test. Par exemple,
.env.test
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_NAME=houdini_test
DATABASE_USER=postgres
DATABASE_PASSWORD=admin
JWT_SECRET=40AB78FD250242DB893CBDAE88A50B6BC4F8846A6804E9AAE5B5712C8EB44473
JWT_EXPIRES_IN=30d

Exécuter les tests pour tester la connexion BD

Afin de tester que la connexion à votre BD de test est fonctionnelle, exécutez npm run test:e2e dans le terminal.

Les tests de base devraient s'exécuter et vous devriez voir les tables créées dans votre BD de test (voir via PgAdmin/DataGrip).