在 jest mock 中使用原始函数会导致无限循环

Using original function inside jest mock causes infinite loop

我有一个来自 dynamoose 的链式方法,在测试中我想向链中添加一个额外的方法。

本质上,在测试中我想替换

的所有实例
Model.query(key).otherChainableMethods()

Model.query(key).limit(LIMIT).otherChainableMethods()

所以我尝试了:

Model.query = jest.fn(key => Model.query(key).limit(LIMIT))

但这显然导致了某种无限循环,因为我得到 RangeError: Maximum call stack size exceeded

如何在 mock 实现中使用函数的原始实现?

我找到了一个简单的解决方案。我可以先将原始方法存储在另一个变量中。

const originalQuery = Profile.query
Profile.query = jest.fn(key => originalQuery(key).limit(LIMIT))