Série Terraform-Terratest - Implémentation des tests fonctionnels (3/4)
Développement des tests en lien avec le cahier des charges
L’enveloppe de notre module étant complète, nous pouvons maintenant rentrer dans la partie fonctionnelle. Pour cela, nous allons réaliser l’implémentation des tests fonctionnels qui nous permettrons de valider que les développements répondent au cahier des charges.
1 Test des interfaces du module
Nous allons tout d’abord modifier notre exemple pour spécifier les interfaces attendues. Pour rappel, le cahier des charges définit les interfaces suivantes :
- En entrée :
- Une variable
your_name_here
de type chaîne de caractère.
- Une variable
- En sortie :
- Une variable
hello_world
.
- Une variable
Modifions donc notre exemple pour ajouter le paramètre d’entrée :
|
|
Spécifions désormais la sortie attendue. Pour cela, créons un fichier examples/simple_example/outputs.tf
à notre exemple dont le contenu est le suivant :
|
|
2 Test des valeurs
Après les premiers tests basiques d’interfaces, procédons au contrôle des valeurs retournées. Pour cela, retournons sur notre code Terratest en Go et ajoutons les lignes suivantes :
|
|
Une nouvelle fois, rentrons un peu dans le code produit :
"github.com/stretchr/testify/assert"
: import d’une nouvelle librairie Go dédiée au test.output := terraform.Output(t, terraformOptions, "test_output")
: Récupération de l’output de notre exempleassert.Equal(t, "Hello test-1", output)
: Comparaison de l’output de notre exemple avec la valeur attendueHello test-1
.
3 Résultat du test
Relançons maintenant le test pour constater le résultat. Pour rappel, la commande est la suivante :
|
|
Le retour est alors :
|
|
Comme attendu, le test échoue.
Ici, l’erreur nous spécifie qu’un paramètre your_name_here
a été spécifié dans notre exemple alors que celui-ci n’est pas (pas encore) attendu par notre module.
Rendez-vous dans le quatrième et dernier article de cette série pour le détail de l’implémentation dans notre module.