【问题标题】:Jest .toBeCalledWith objectContaining not matching expect on receivedJest .toBeCalledWith objectContaining 不匹配期望收到
【发布时间】:2020-10-01 01:38:48
【问题描述】:

我正在尝试部分匹配传递给TitleRepo.find 的对象。我无法理解我做错了什么。

expect(jest.fn()).toBeCalledWith(...expected)

Expected: ObjectContaining {"filter": {"limit": Any<Number>}}
Received: {"filter": {"title_ids.xxx.deleted_at": null, "title_ids.xxx.deleted_at": null, "title_ids.xxx.id": {"$exists": true, "$ne": null}}, "limit": 10, "sort": {"created_at": -1}}

Number of calls: 1

  31 |         });
  32 | 
> 33 |         expect(TitleRepo.find).toBeCalledWith(
     |                                ^
  34 |             expect.objectContaining({"filter": {"limit": expect.any(Number)}}),
  35 |         );
  36 |     })

  at Object.<anonymous> (tests/query/TitleQuery.test.js:33:32)

测试中的相关行是。

TitleRepo.find = jest.fn();

it('should able to set platform correctly', async () => {
        const titles = await TitleQuery.find({
            platform: 'chandu'
        });

        expect(TitleRepo.find).toBeCalledWith(
            expect.objectContaining({"filter": {"limit": expect.any(Number)}}),
        );
    })

【问题讨论】:

  • 在你的情况下是expect.objectContaining({"filter": expect.objectContaining({"limit": expect.any(Number)})})
  • @EstusFlask 我按照您的建议进行了编辑,但仍然无法正常工作Expected: ObjectContaining {"filter": ObjectContaining {"limit": Any&lt;Number&gt;}}
  • @EstusFlask 它工作!谢谢。请张贴作为答案,我会接受。 :D
  • 当然,很高兴它有帮助。

标签: unit-testing testing jestjs automated-tests


【解决方案1】:

limit 属性与filter 处于同一级别。

应该是:

expect(TitleRepo.find).toBeCalledWith(expect.objectContaining({ limit: expect.any(Number) })

【讨论】:

    猜你喜欢
    • 2021-06-12
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 2020-06-26
    相关资源
    最近更新 更多