我正在测试一个函数,该函数对我想要模拟的模式进行异步调用:
const someFunction = async (id) => {
const data = await SomeModel.findById(id).lean()
因此,为了保持代码的逻辑,我想模拟SomeModel
。
data
应该是如下所示的对象:{ _id: 'someId' }
但是我应该如何对应用于SomeModel.findById
的lean()
方法进行模拟呢?
我试过这个:
SomeModel.findById.mockReturnValueOnce({ _id: 'someId' })
SomeModel.findById.mockImplementationOnce(() => Promise.resolve({ _id: 'someId' }))
但它没有逻辑,因为我需要模拟的是包括lean()
在内的整个代码行,有什么提示吗?
发布于 2021-05-29 01:03:30
我用以下方法解决了这个问题:
SomeModel.findById.mockImplementationOnce(() => ({
lean: jest.fn().mockReturnValue({ _id: 'someId' }),
}));
https://stackoverflow.com/questions/67742566
复制相似问题