在 NodeJS + Typescript AWS Lambda 上进行单元测试
Posted
技术标签:
【中文标题】在 NodeJS + Typescript AWS Lambda 上进行单元测试【英文标题】:Unit Testing on a NodeJS + Typescript AWS Lambda 【发布时间】:2020-09-15 23:29:24 【问题描述】:哪一种是使用 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);
【问题讨论】:
【参考方案1】:我设法找到了一种使用 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 repo 中提供了一个完整的工作虚拟示例:https://github.com/jvillane/aws-sam-lambda-jest-unit-test
【讨论】:
以上是关于在 NodeJS + Typescript AWS Lambda 上进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章
Typescript/nodejs:变量在某些位置隐含类型为“any”