在Node.js中使用Jest模拟类的实例函数(来自类的新实例的函数)时遇到问题的原因可能是Jest的模拟机制与Node.js的模块化机制不兼容。为了解决这个问题,可以尝试以下方法:
- 使用Sinon.js:Sinon.js是一个功能强大的测试工具库,可以用于模拟和断言JavaScript函数的行为。它提供了丰富的API来模拟类的实例函数。你可以使用Sinon.js的
stub
方法来创建一个模拟函数,并通过callsFake
方法来指定模拟函数的实现。 - 使用Proxy:Node.js中的Proxy对象可以用于拦截并自定义对象的操作。你可以使用Proxy来拦截类的构造函数,并返回一个包含模拟函数的代理对象。
- 重构代码:如果无法使用上述方法解决问题,可能需要考虑重构代码,将类的实例函数的逻辑抽离到一个独立的函数中,并在测试中直接对该函数进行模拟和断言。