我有一些单元测试,我使用
aws-sdk-client-mock-jest
来模拟 DynamoDB
操作。我正在导入以下包,如下所示:
import "aws-sdk-client-mock-jest";
const {DynamoDBClient} = require("@aws-sdk/client-dynamodb");
const {QueryCommand} = require("@aws-sdk/lib-dynamodb");
const {mockClient} = require("aws-sdk-client-mock");
在我的单元测试中,我使用这样的模拟:
const ddbMock = mockClient(DynamoDBClient);
test("Received customer", async () => {
ddbMock.on(QueryCommand).resolves({
"name": "customer",
"data": "some data"
});
const db = new DbRepository();
const customer = await db.getCustomerAsync();
// some assertions
expect(customer).toHaveProperty("name", "customer");
});
但是,当调用 toHaveProperty() 时,会抛出一个错误,其中指出:
TypeError: this.customTesters is not iterable
我在这里做错了什么?
欢迎任何建议。谢谢!
我尝试使用这里提到的期望库但这不起作用。
我的单元测试是JS文件。
https://github.com/m-radzikowski/aws-sdk-client-mock/issues/219。
现在,您可以尝试的最简单的事情似乎是将jest
和/或
ts-jest
升级到至少主要版本 29。另请注意,
aws-sdk-client-mock-jest
旨在验证
mockClient
对象上的命令调用,因此,如果您没有在它们上使用“toHaveReceivedCommand”类型的匹配器,则无需导入
aws-sdk-client-mock-jest
,这可以修复您的问题当前的代码片段也是如此。