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 не изменится, результирующее поведение не изменится. Это предположение до сих пор остается в силе.

Надеюсь, это поможет.

Другие вопросы по тегам