AWS-CDK модульное тестирование и интеграционное тестирование
Как правильно юнит-тестирование и интеграционное тестирование моих недавно построенных конструкций?
Что должно быть на самом деле проверено? Как это должно быть проверено?
Спасибо!
0 ответов
Что касается модульных тестов, у нас есть библиотека (в настоящее время только в 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
});
Вы можете найти много примеров в репозитории AWS CDK GitHub (ищите "тестовые" каталоги).
Интеграционные тесты немного сложнее. В основном мы пишем небольшие CDK-приложения в качестве интеграционных тестов ( например) и сравниваем результаты cdk synth
в зарегистрированный файл ожидания. Если они различаются, мы не выполняем сборку и запрашиваем, чтобы пользователь вручную развернул приложение и обновил зарегистрированный файл. Этот подход основывается на предположении, что если шаблон CFN не изменится, результирующее поведение не изменится. Это предположение до сих пор остается в силе.
Надеюсь, это поможет.