使用 aws-sdk-client-mock-jest 时如何强制使用 jest 匹配器?

问题描述 投票:0回答:1

我有一些单元测试,我使用

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文件。

javascript node.js jestjs aws-sdk
1个回答
0
投票
有一个已报告的开放“错误”:

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
,这可以修复您的问题当前的代码片段也是如此。

© www.soinside.com 2019 - 2024. All rights reserved.