typescript - Parsning av body-sträng med middy när man anropar en AWS Lambda-hanterare med Jest?
Tar en Lambda-handler skriven i TypeScript
const identityUrl: ValidatedEventAPIGatewayProxyEvent<typeof schema> = async (event) => {
const iFRequest = event.body as unknown as IFRequest;
const fileUrl = iFRequest;
return formatJSONResponse({
result: fileUrl,
});
}
export const main = middyfy(identityFileGetSigner);
Och att anropa det med ett Jest-testfall resulterar i att kroppen skickas till lambdan som en oparsad sträng.
const defaultEvent: APIGatewayProxyEvent = {
httpMethod: 'post',
headers: {Authorization: "dummyToken"},
body: JSON.stringify(apiParamsBasic),
isBase64Encoded: false,
path: '/url',
multiValueQueryStringParameters: null,
multiValueHeaders: null,
pathParameters: null,
queryStringParameters: null,
stageVariables: null,
requestContext: null,
resource: ''
}
test('Empty list', async () => {
const result1 = await main(defaultEvent, defaultContext);
}
Hur kan jag få Middy att analysera strängen?
Svar #1
Jag hade samma problem ovan där JSON-strängen inte parsades av middy i Jest-tester.
Att lägga till Content-Type-huvudet som application/json i headers i testhändelsen löste problemet.
I ditt testevenemang ovan skulle det se ut så här:
const defaultEvent: APIGatewayProxyEvent = {
httpMethod: 'post',
headers: { Authorization: "dummyToken", 'Content-Type': 'application/json' },
body: JSON.stringify(apiParamsBasic),
isBase64Encoded: false,
path: '/url',
multiValueQueryStringParameters: null,
multiValueHeaders: null,
pathParameters: null,
queryStringParameters: null,
stageVariables: null,
requestContext: null,
resource: ''
}
