As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Adote uma abordagem de desenvolvimento orientado por testes
Recomendamos que você siga uma abordagem de desenvolvimento orientado a testes (TDD) com o. AWS CDK TDDé uma abordagem de desenvolvimento de software em que você desenvolve casos de teste para especificar e validar seu código. Em termos simples, primeiro você cria casos de teste para cada funcionalidade e, se o teste falhar, então você escreverá um novo código para passar no teste e tornar o código simples e livre de erros.
Você pode usar TDD para escrever o caso de teste primeiro. Isso ajuda a validar a infraestrutura com diferentes restrições de design em termos de aplicar a política de segurança para os recursos e seguir uma convenção de nomenclatura exclusiva para o projeto. A abordagem padrão para testar AWS CDK aplicativos é usar o módulo de AWS CDK asserções e estruturas de teste populares, como Jest
Há duas categorias de testes que você pode escrever para seus AWS CDK aplicativos:
-
Use afirmações refinadas para testar um aspecto específico do CloudFormation modelo gerado, como “esse recurso tem essa propriedade com esse valor”. Esses testes podem detectar regressões e também são úteis quando você está desenvolvendo novos recursos usando TDD (escreva um teste primeiro e depois faça com que ele passe escrevendo uma implementação correta). Afirmações minuciosas são os testes que você mais escreverá.
-
Use testes instantâneos para testar o modelo sintetizado em relação a um CloudFormation modelo de linha de base armazenado anteriormente. Os testes de snapshots possibilitam refatorar livremente, pois você pode ter certeza de que o código refatorado funciona exatamente da mesma forma que o original. Se as alterações foram intencionais, é possível aceitar uma nova linha de base para futuros testes. No entanto, AWS CDK as atualizações também podem fazer com que os modelos sintetizados sejam alterados, portanto, você não pode confiar apenas em instantâneos para garantir que sua implementação esteja correta.
Teste unitário
Este guia se concentra TypeScript especificamente na integração de testes unitários. Para habilitar o teste, certifique-se de que seu package.json
arquivo tenha as seguintes bibliotecas: @types/jest
jest
, e ts-jest
indevDependencies
. Para adicionar esses pacotes, execute o comando cdk init lib --language=typescript
. É possível ver a estrutura a seguir após executar o comando anterior.

O código a seguir é um exemplo de um package.json
arquivo habilitado com a biblioteca Jest.
{ ... "scripts": { "build": "npm run lint && tsc", "watch": "tsc -w", "test": "jest", }, "devDependencies": { ... "@types/jest": "27.5.2", "jest": "27.5.1", "ts-jest": "27.1.5", ... } }
Escreva o caso de teste na pasta Test. O exemplo a seguir mostra um caso de teste para uma AWS CodePipeline construção.
import { Stack } from 'aws-cdk-lib'; import { Template } from 'aws-cdk-lib/assertions'; import * as CodePipeline from 'aws-cdk-lib/aws-codepipeline'; import * as CodePipelineActions from 'aws-cdk-lib/aws-codepipeline-actions'; import { MyPipelineStack } from '../lib/my-pipeline-stack'; test('Pipeline Created with GitHub Source', () => { // ARRANGE const stack = new Stack(); // ACT new MyPipelineStack(stack, 'MyTestStack'); // ASSERT const template = Template.fromStack(stack); // Verify that the pipeline resource is created template.resourceCountIs('AWS::CodePipeline::Pipeline', 1); // Verify that the pipeline has the expected stages with GitHub source template.hasResourceProperties('AWS::CodePipeline::Pipeline', { Stages: [ { Name: 'Source', Actions: [ { Name: 'SourceAction', ActionTypeId: { Category: 'Source', Owner: 'ThirdParty', Provider: 'GitHub', Version: '1' }, Configuration: { Owner: { 'Fn::Join': [ '', [ '{{resolve:secretsmanager:', { Ref: 'GitHubTokenSecret' }, ':SecretString:owner}}' ] ] }, Repo: { 'Fn::Join': [ '', [ '{{resolve:secretsmanager:', { Ref: 'GitHubTokenSecret' }, ':SecretString:repo}}' ] ] }, Branch: 'main', OAuthToken: { 'Fn::Join': [ '', [ '{{resolve:secretsmanager:', { Ref: 'GitHubTokenSecret' }, ':SecretString:token}}' ] ] } }, OutputArtifacts: [ { Name: 'SourceOutput' } ], RunOrder: 1 } ] }, { Name: 'Build', Actions: [ { Name: 'BuildAction', ActionTypeId: { Category: 'Build', Owner: 'AWS', Provider: 'CodeBuild', Version: '1' }, InputArtifacts: [ { Name: 'SourceOutput' } ], OutputArtifacts: [ { Name: 'BuildOutput' } ], RunOrder: 1 } ] } // Add more stage checks as needed ] }); // Verify that a GitHub token secret is created template.resourceCountIs('AWS::SecretsManager::Secret', 1); }); );
Para executar um teste, execute o comando npm run test
no projeto. A consulta retorna os resultados a seguir.
PASS test/codepipeline-module.test.ts (5.972 s) ✓ Code Pipeline Created (97 ms) Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 6.142 s, estimated 9 s
Para obter mais informações sobre casos de teste, consulte Construções de teste no Guia do AWS Cloud Development Kit (AWS CDK) desenvolvedor.
Teste de integração
Os testes de integração para AWS CDK construções também podem ser incluídos usando um integ-tests
módulo. Um teste de integração deve ser definido como um AWS CDK aplicativo. Deve haver uma one-to-one relação entre um teste de integração e um AWS CDK aplicativo. Para obter mais informações, visite o integ-tests-alpha módulo na AWS CDK APIReferência.