我目前正处于单元测试阶段,这是我第一次这样做,所以请耐心等待。
我已经对此做过研究,我想我已经找到了我应该使用的软件包和方法。
据我所知,aws-sdk-mock是最好的选择。它似乎是完整的,并有很好的记录,所以在这个方向上没有问题。我唯一的问题是缺少AWS调用模拟的文档。
我遇到的主要问题是模拟一个特定的函数,它的代码存储在与测试相同的项目中。
I:我有一个lambda.ts
export const handler: APIGatewayProxyHandlerV2 = async (event: any) => {
const body = event.body;
//do things with body
return {
statusCode:200,
body: "OK"
}
}我怎么才能正确地嘲笑这个呢?我启动了一个类似于这样的lambda.test.ts:
import AWSMock from "aws-sdk-mock"
import AWS from "aws-sdk"
beforeAll(async (done) => {
//get requires env vars
done()
})
describe("Calling lambda", () => {
it("should reject API call because of missing arguments", async () => {
AWSMock.setSDKInstance(AWS)
AWSMock.mock("Lambda", "invoke", async (params, callback) => {
const lambda = new AWS.Lambda()
await lambda.invoke({
FunctionName: 'lambda',
...?
}).promise()
})
})
})我不知道如何指出这个被模仿的lambda背后的代码在某个地方是可用的。
提前感谢您的帮助!
发布于 2022-07-31 22:59:47
可能不会回答你的问题,但你也没有得到任何答案。我只会在lambda中声明依赖项。然后将依赖项注入到一个独立的类(myClass)或文件中,我可以对其进行完全的单元测试。即:
export const handler: APIGatewayProxyHandlerV2 = async (event: any) => {
const body = event;
//Declare dependencies
const myDependency1 = new Dependency1();
const myClass = new MyClass(myDependency1);
return myClass.whatever(event):
}
}
describe("Calling myClass", () => {
it("should reject API call because of missing arguments", async () => {
const body = event;
//Declare dependencies
const myDependency1 = new Dependency1();
const myClass = new MyClass(myDependency1);
myClass.whatever(event):
}
})
})
})https://stackoverflow.com/questions/69839759
复制相似问题