对我新建的结构进行单元测试和集成测试的正确方法是什么?
实际应该测试什么?应该如何测试?
谢谢!
就单元测试而言,我们有一个库(目前仅在 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 模板没有改变,则结果行为也不会改变。到目前为止,这个假设一直很好。
希望有帮助。