typescript - Hur kör man jest med AWS Lambda?
Jag försöker köra mitt e2e-test efter driftsättning så att jag kan rulla tillbaka vid eventuellt fel. Jag följde instruktionen som beskrivs i den här bloggen
Det här är min lambda:
export async function testLambda(event: APIGatewayEvent, context, callback) {
console.log('The first version!')
const response = {
statusCode: 200,
body: JSON.stringify({
message: 'The first version!'
})
}
return callback(null, response)
}
detta är min postkrok:
export async function postHook(event, context, callback) {
const deploymentId = event.DeploymentId;
const lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId;
console.log(`deploymentId: ${deploymentId} - lifecycleEventHookExecutionId: ${lifecycleEventHookExecutionId}`)
try {
const jest = require('jest');
require('ts-jest');
const options = {
projects: [__dirname],
silent: true,
};
await jest.runCLI(options, options.projects);
// update aws deployment for sucsses
} catch (err) {
// update aws deployment for failure
console.log(err);
return { statusCode: 500 }
}
}
mina tester är skrivna i typescript och jag laddade upp min jest.config.js och tsconfig.json till serverlösa applikationens zip-fil. Oavsett vad jag gör känns de globala symbolerna i jest såsom describe, expect etc... inte igen:
Kan inte hitta namnet 'describe'. Behöver du installera typedeklarationer för en testrunner? Prova
npm i @types/jestellernpm i @types/mochaoch lägg sedan tilljestellermochai fältet types i din tsconfig.
Hur kan jag köra mitt test med AWS Lambda? Det enda alternativ jag har är antingen att trigga någon annan uppgift som till exempel CodeBuild för att köra mitt test eller byta mitt testramverk till Mocha. Finns det någon bättre lösning?
Svar #1
Jest placerar normalt describe, test och andra funktioner i den globala kontexten. När du startar det programmässigt kan det inte göra det, så du måste importera dessa funktioner uttryckligen innan användning.
import { describe, test} from '@jest/globals';
