简体   繁体   English

NodeJS + Typescript AWS Lambda 上的单元测试

[英]Unit Testing on a NodeJS + Typescript AWS Lambda

Which one is the best way to unit test a lambda implemented in NodeJS using TypeScript like this dummy one:哪一种是使用 TypeScript 对 NodeJS 中实现的 lambda 进行单元测试的最佳方法,如下所示:

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

I managed to find a way to unit testing using jest using jest.fn() like this:我设法找到了一种使用 jest 使用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);
})

A complete working dummy example is available in the github repo: https://github.com/jvillane/aws-sam-lambda-jest-unit-test github 存储库中提供了一个完整的工作虚拟示例: https://github.com/jvillane/aws-sam-lambda-jest-unit-test

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM