如何模拟模拟 find() 的 toArray()?

How to mock toArray() of mocked find()?

对于这个方法

content.js

const content = await Content.findOne({ _id: articleId })

我像这样模拟:

content.test.js

Content.findOne = jest.fn(() => Promise.resolve({ some: 'content' }))

但是我如何模拟 mongo 本机驱动程序使用的 find.toArray() 方法?

const posts = await Content.find({ category: 'foo' }).toArray()

既然你在模拟 Content 的属性,我会说继续这样做。使 Content.find return 具有 toArray 属性 的对象是可调用函数:

Content.find = jest.fn(() => ({ toArray: _ => [
  { some: 'content' },
  { some: 'content' }
] }));

您不应该调用 mongo 的本机驱动程序,因为您没有测试 mongo 驱动程序(对吗?)。 你应该做的是模拟 mongo 的本地驱动程序。