Что касается модульных тестов, у нас есть библиотека (в настоящее время только в TypeScript), чтобы делать утверждения против синтезированных шаблонов CloudFormation.Он называется @ aws-cdk / assert .Поэтому в модульных тестах мы обычно определяем стек, добавляем нашу конструкцию, взаимодействуем с ней, а затем делаем утверждения на основе синтезированного шаблона с использованием библиотеки утверждений.
Вот эскиз:
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
});
Вы можете найти много примеров в репозитории GitHub AWS CDK (ищите каталоги "test").
Интеграционные тесты немного сложнее.В основном мы пишем небольшие CDK-приложения в виде интеграционных тестов (, например ) и сравниваем результат cdk synth
с проверенным файлом ожидания.Если они различаются, мы не выполняем сборку и запрашиваем, чтобы пользователь вручную развернул приложение и обновил зарегистрированный файл.Этот подход основывается на предположении, что если шаблон CFN не изменится, результирующее поведение не изменится.Это предположение до сих пор вполне оправдано.
Надеюсь, это поможет.