typescript - Parsarea șirului body folosind middy atunci când se apelează un handler AWS lambda cu Jest?


Preluarea unui handler Lambda scris în 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);

Și apelarea acestuia cu un test Jest duce la transmiterea corpului către lambda ca un șir neprocesat.

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

Cum pot să fac ca Middy să analizeze șirul?

Răspuns #1

Am avut aceeași problemă de mai sus, unde șirul JSON nu era analizat de middy în testele Jest.

Adăugarea antetului Content-Type ca application/json în headers în evenimentul de test a rezolvat problema.

În evenimentul tău de test de mai sus, ar arăta astfel:

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