AWS-CDK Юнит-тестирование и интеграционное тестирование - PullRequest
0 голосов
/ 01 декабря 2018

Как правильно выполнить модульное и интеграционное тестирование моих недавно построенных конструкций?

Что должно быть на самом деле проверено?Как это должно быть проверено?

Спасибо!

1 Ответ

0 голосов
/ 04 декабря 2018

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

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

...