假设我有一个导出默认函数的简单文件:
// UniqueIdGenerator.js
const uniqueIdGenerator = () => Math.random().toString(36).substring(2, 8);
export default uniqueIdGenerator;
我会这样使用:
import uniqueIdGenerator from './UniqueIdGenerator';
// ...
uniqueIdGenerator();
我想在测试中断言调用此方法时会保留原始功能。我会使用 jest.spyOn 来做到这一点,但是它需要一个对象以及一个函数名称作为参数。如何以干净的方式做到这一点?还有类似的GitHub issue对于任何感兴趣的人来说, Jasmine
。
最佳答案
我最终放弃了默认导出:
// UniqueIdGenerator.js
export const uniqueIdGenerator = () => Math.random().toString(36).substring(2, 8);
然后我可以像这样使用和监视它:
import * as UniqueIdGenerator from './UniqueIdGenerator';
// ...
const spy = jest.spyOn(UniqueIdGenerator, 'uniqueIdGenerator');
Some recommend将它们包装在 const 对象中,然后将其导出。我想你也可以使用一个类来包装。
但是,如果您无法修改该类,仍然有一个(不太好的)解决方案:
import * as UniqueIdGenerator from './UniqueIdGenerator';
// ...
const spy = jest.spyOn(UniqueIdGenerator, 'default');
关于reactjs - 如何使用 Jest 监视默认导出函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54245654/