使用Jest调用AWS lambda处理程序时使用middy解析正文字符串



采用用TypeScript 编写的Lambda处理程序

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);

使用Jest测试用例调用它会导致主体作为未解析的字符串传递给lambda。

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);
}

如何让Middy解析字符串?

我遇到了与上面相同的问题,在Jest测试中middy没有解析JSON字符串。

在测试事件中将Content-Type标头作为application/json添加到headers解决了该问题。

在上面的测试事件中,它看起来是这样的:

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: ''
}

最新更新