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