gpt4 book ai didi

javascript - Jest expect.objectContaining() 在 expect.toHaveBennCalled() 中失败

转载 作者:行者123 更新时间:2023-12-05 00:34:41 25 4
gpt4 key购买 nike

我正在尝试编写一个测试来验证使用 aws-sdk 写入 DynamoDB 的代码。尽管官方文档(https://jestjs.io/docs/en/expect#expectobjectcontainingobject)中提出了一个非常相似的用例,但我的断言失败了。任何帮助表示赞赏。

这是我的测试:

test("givenCprRepositoryServiceTestSuite_whenSaveCprRecord_thenMetaExpiresAtAppended", async () => {
await cprRepositoryService.saveCprRecord({cprNumber: existingCpr, firstName: "Jens", lastName: "Jensen"})

expect(aws.DynamoDB.DocumentClient.prototype.put).toHaveBeenCalledWith(
expect.objectContaining({
Item: {
metaExpiresAt: expect.any(Number)
}
}))
})

并且返回的错误是:

错误:
expect(jest.fn()).toHaveBeenCalledWith(...expected)
预期的对象包含:
{"Item": {"metaExpiresAt": Any<Number>}}
已收到:
{"Item": {"cprNumber": "1234567890", "firstName": "Jens", "lastName": "Jensen", "metaExpiresAt": 1570792526}, "TableName": "CountryLayer_Cpr"}

最佳答案

expect.objectContaining(object)方法无法处理嵌套对象。要解决此问题,我建议对您的代码进行以下修改。

test("givenCprRepositoryServiceTestSuite_whenSaveCprRecord_thenMetaExpiresAtAppended", async () => {
await cprRepositoryService.saveCprRecord({cprNumber: existingCpr, firstName: "Jens", lastName: "Jensen"})

expect(aws.DynamoDB.DocumentClient.prototype.put).toHaveBeenCalledWith(
expect.objectContaining({
Item: expect.objectContaining({
metaExpiresAt: expect.any(Number)
})
}))
})

关于javascript - Jest expect.objectContaining() 在 expect.toHaveBennCalled() 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58339826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com