【发布时间】: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<Number>}} -
@EstusFlask 它工作!谢谢。请张贴作为答案,我会接受。 :D
-
当然,很高兴它有帮助。
标签: unit-testing testing jestjs automated-tests