Según los ejemplos que veo, las aserciones de código se esperan de la plantilla json cf frente a la plantilla generada por el sintetizador cdk.
¿Cómo configuramos la plantilla json cf esperada?
Habiendo dicho eso, ¿hay algún propósito en tener pruebas unitarias para el código CDK? Tal vez me estoy perdiendo la idea aquí. Por favor, indícalo.
aws-cdk tiene una biblioteca de utilidades de prueba que son útiles para afirmar contra pilas. El repositorio de cdk lo usa para muchas de sus propias pruebas unitarias.
https://www.npmjs.com/package/@aws-cdk/assert
Esto le permite hacer algo como
// jest test('configurable retention period cannot exceed 14 days', () => { const stack = new MyStack(); expect(stack).to(haveResource('AWS::SomeService::SomeResource', { SomePropertyOnResource: 'some-value-it-should-have' })); });Esto solo es compatible con las aplicaciones de CDK escritas en mecanografiado a partir de ahora, pero el plan es admitir eventualmente todos los idiomas compatibles con cdk.
Si debe hacer esto o no, por lo general es similar a preguntar si debe realizar una prueba unitaria de cualquier base de código. Si tiene mucha lógica comercial compleja que hace cosas como crear recursos de forma condicional o cambiar el comportamiento de sus aplicaciones, probablemente valga la pena obtener algo de cobertura en esos lugares. Si su aplicación es esencialmente un montón de declaraciones estáticas sin condicionales, bucles, etc., tal vez pueda arreglárselas con solo ejecutar cdk diff al realizar cambios y verificar manualmente los cambios esperados.
Si está escribiendo construcciones personalizadas para reutilizarlas en diferentes aplicaciones de cdk, probablemente sea una buena idea realizar pruebas unitarias.
Algunos documentos relevantes https://docs.aws.amazon.com/cdk/latest/guide/testing.html
Un enfoque que uso es crear un proyecto diferente delegado para usar los recursos que espero que se hayan creado.
Entonces, desde el cdk-init-cluster , simplemente creo todos los recursos necesarios usando la biblioteca cdk . Entonces, después de la fase de IMPLEMENTACIÓN , ejecuto el cdk-init-cluster-test que está delegado para completar/consultar/usar los recursos creados previamente a partir del cdk-init-cluster .
Este enfoque solo puede ayudar con algunos tipos de recursos, tales como:
El proyecto de prueba está a cargo de:
Luego, elimino los datos insertados para la prueba. Si no se producen excepciones, se pasa la prueba.