AWS-CDK单元测试和集成测试

时间:2018-12-01 01:03:00

标签: aws-cdk

对新建结构进行单元测试和集成测试的正确方法是什么?

应该实际测试什么? 应该如何测试?

谢谢!

1 个答案:

答案 0 :(得分:5)

就单元测试而言,我们有一个库(目前仅在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应用程序作为集成测试(for example),并将cdk synth的结果与签入的期望文件进行比较。如果它们不同,我们将使构建失败并要求用户手动部署应用程序并更新签入的文件。该方法基于这样的假设:如果CFN模板没有更改,则所得行为也不会更改。到目前为止,这种假设一直很好。

希望有帮助。