Quelle est la bonne façon de tester à l'unité et de tester l'intégration de mes nouvelles constructions?
Que faut-il réellement tester? Comment le tester?
Merci!
En ce qui concerne les tests unitaires, nous avons une bibliothèque (actuellement uniquement en TypeScript) pour faire des assertions contre les modèles CloudFormation synthétisés. Cela s'appelle @ aws-cdk/assert . Donc, ce que nous faisons habituellement dans les tests unitaires, c'est définir une pile, ajouter notre construction, interagir avec elle et ensuite faire des assertions contre le modèle synthétisé en utilisant la bibliothèque d'assertions.
Voici un croquis:
import { expect, haveResource } from '@aws-cdk/assert';
import cdk = require('@aws-cdk/cdk');
const stack = new cdk.Stack();
const myConstruct = new MySpecialBucket(stack, 'Test');
myConstruct.doSomething();
expect(stack).to(haveResource('AWS::S3::Bucket', {
Prop: 1234
});
Vous pouvez trouver de nombreux exemples dans le référentiel AWS CDK GitHub (recherchez les répertoires "test").
Les tests d'intégration sont un peu plus compliqués. Nous avons essentiellement écrit de petites applications CDK en tant que tests d'intégration ( par exemple ) et comparé le résultat de cdk synth
dans un fichier d'attente archivé. S'ils diffèrent, nous échouons à la génération et demandons à l'utilisateur de déployer manuellement l'application et de mettre à jour le fichier archivé. Cette approche découle de l'hypothèse que si le modèle CFN ne changeait pas, le comportement résultant ne changerait pas. Cette hypothèse s'est jusqu'à présent assez bien tenue.
J'espère que cela pourra aider.