假设我有一个导出默认函数的简单文件:
// UniqueIdGenerator.js
const uniqueIdGenerator = () => Math.random().toString(36).substring(2, 8);
export default uniqueIdGenerator;
我会这样使用:
import uniqueIdGenerator from './UniqueIdGenerator';
// ...
uniqueIdGenerator();
我想在我的测试中断言这个方法是在保持原始功能的同时被调用的。我会用 jest.spyOn
但是,它需要一个对象和一个函数名作为参数。你怎么能以干净的方式做到这一点?对于任何感兴趣的人, jasmine
都有一个类似的 GitHub 问题。
原文由 thisismydesign 发布,翻译遵循 CC BY-SA 4.0 许可协议
我最终放弃了默认导出:
然后我可以像这样使用和监视它:
有些人建议 将它们包装在一个 const 对象中,然后将其导出。我想您也可以使用一个类进行包装。
但是,如果您无法修改课程,仍然有一个(不太好的)解决方案: