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

Rom*_*nde 6 aws-cdk

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

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

谢谢!

Ela*_*ael 13

就单元测试而言,我们有一个库(当前仅在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
});
Run Code Online (Sandbox Code Playgroud)

您可以在AWS CDK GitHub存储库中找到许多示例(查找“测试”目录)。

集成测试比较棘手。我们一直在做的工作基本上是编写一些CDK应用程序作为集成测试(例如),并将其结果与cdk synth签入的期望文件进行比较。如果它们不同,我们将使构建失败并要求用户手动部署应用程序并更新签入的文件。该方法基于这样的假设:如果CFN模板没有更改,则所得行为也不会更改。到目前为止,这一假设一直很好。

希望能有所帮助。

  • Python 中无法进行 CDK 测试。目前还不支持。 (2认同)