我用玩笑来测试我的node.js代码。我需要使用猫鼬连接到mongodb。但是我不知道如何模拟链接的函数。
我需要模拟的功能(船只是一个模块):
return await Vessels.find({}).exec();
我尝试模仿的方式,但是失败了:
Vessels.find.exec = jest.fn(() => [mockVesselResponse]);
我想模拟链接函数Vessels.find({}).exec()
,在这里的任何人都可以帮助我,谢谢。
答案 0 :(得分:1)
朴素的方法是模拟方法find
,该方法将使用方法exec
返回对象(有关详细信息,请查看ways to mock modules上的Jest docs):
import Vessels from '/path/to/vessels';
jest.mock('/path/to/vessels');
Vessels.prototype.find.mockReturnThis();
Vessels.prototype.exclude.mockReturnThis();
Vessels.prototype.anyOtherChainingCallMethod.mockReturnThis();
it('your test', () => {
Vessels.prototype.exec.mockResolvedValueOnce([youdata]);
// your code here
});
但是在我看来,要完成很多模拟每个内部方法的大量手动工作。
相反,我建议您更深一层地嘲笑。用mockingoose
模拟mongoose
模型。
从未与mongoose
合作,因此无法提供此方法的示例。