web-dev-qa-db-ja.com

AWS-CDK単体テストと統合テスト

新しく構築した構成要素をユニットテストおよび統合テストする適切な方法は何ですか?

実際に何をテストすべきですか?どのようにテストする必要がありますか?

ありがとう!

10
Romande

単体テストに関する限り、合成されたCloudFormationテンプレートに対してアサーションを作成するためのライブラリ(現在はTypeScriptのみ)があります。 @ 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リポジトリで多くの例を見つけることができます(「test」ディレクトリを探してください)。

統合テストはもう少しトリッキーです。基本的には、統合テスト( たとえば )として小さなCDKアプリを記述し、cdk synthの結果をチェックインされた期待ファイルと比較しています。それらが異なる場合、ビルドに失敗し、ユーザーがアプリを手動でデプロイしてチェックインしたファイルを更新するように要求します。このアプローチは、CFNテンプレートが変更されない場合、結果の動作は変更されないという想定に基づいています。その仮定は、これまでのところかなりよく成り立っています。

お役に立てば幸いです。

16
Elad Ben-Israel