对新建结构进行单元测试和集成测试的正确方法是什么?
应该实际测试什么? 应该如何测试?
谢谢!
答案 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模板没有更改,则所得行为也不会更改。到目前为止,这种假设一直很好。
希望有帮助。