Модульное тестирование на NodeJS + Typescript AWS Lambda - PullRequest
0 голосов
/ 28 мая 2020

Какой из них является лучшим способом модульного тестирования лямбда-выражения, реализованного в NodeJS, с использованием TypeScript, такого как этот фиктивный:

import {Callback} from "aws-lambda";

export interface BinaryEvent {
  number1: number
  number2: number
}

export interface Result {
  result: number
}

export type BinaryOperation = (number1: number, number2: number) => number;

export type BinaryOperationHandler = ({number1, number2}: BinaryEvent, context: any, callback: Callback<Result>) => void;

export const addition: BinaryOperationHandler = ({number1, number2}, context, callback) => {
  setTimeout(() => callback(null, {result: (number1 + number2)}), 1000);
}

1 Ответ

0 голосов
/ 28 мая 2020

Мне удалось найти способ модульного тестирования с помощью шутки, используя jest.fn() вот так:

import {addition} from "./index";

it('Sums 2 numbers', async() => {
  const number1 = 3, number2 = 2, callback = jest.fn();
  await addition({number1, number2}, {}, callback);
  expect(callback.mock.calls.length).toBe(1);
  expect(callback.mock.calls[0][1].result).toBe(number1 + number2);
})

Полный рабочий пример-пустышка доступен в репозитории github: https://github.com/jvillane/aws-sam-lambda-jest-unit-test

...