当前位置: 首页 > 面试题库 >

如何使用Jest监视默认的导出功能?

杭昊空
2023-03-14
问题内容

假设我有一个导出默认功能的简单文件:

// UniqueIdGenerator.js
const uniqueIdGenerator = () => Math.random().toString(36).substring(2, 8);

export default uniqueIdGenerator;

我会这样使用:

import uniqueIdGenerator from './UniqueIdGenerator';
// ...
uniqueIdGenerator();

我想在测试中断言在保持原始功能的同时调用了此方法。jest.spyOn但是,我需要一个对象以及一个函数名称作为参数。您如何以一种干净的方式做到这一点?还有一个类似的GitHub的问题为jasmine兴趣的人。


问题答案:

我最终抛弃默认的导出(为什么你应该:1,2):

// UniqueIdGenerator.js
export const uniqueIdGenerator = () => Math.random().toString(36).substring(2, 8);

然后我可以像这样使用和监视它:

import * as UniqueIdGenerator from './UniqueIdGenerator';
// ...
const spy = jest.spyOn(UniqueIdGenerator, 'uniqueIdGenerator');

一些建议将它们包装在const对象中,然后导出。我想您也可以使用包装类。

但是,如果您不能修改类,那么仍然有一个(不太好的)解决方案:

import * as UniqueIdGenerator from './UniqueIdGenerator';
// ...
const spy = jest.spyOn(UniqueIdGenerator, 'default');


 类似资料:
  • 问题内容: 我最近想测试一些自定义方法在React组件的方法中有条件地调用。 我使用Jest作为测试框架,其中包括用于模拟/间谍的工具。我已经读过,通过执行以下操作,与Sinon一起测试将是微不足道的: 我试图像这样用Jest重新创建它: 此代码失败,并引发以下错误: 是否可以用Jest测试此功能?如果是这样,怎么办? 问题答案: 关键是使用笑话方法。应该是这样的: 如此处所示:测试功能是否被称为

  • 本文向大家介绍vue使用ElementUI时导航栏默认展开功能的实现,包括了vue使用ElementUI时导航栏默认展开功能的实现的使用技巧和注意事项,需要的朋友参考一下 本文主要参考: http://element.eleme.io/#/zh-CN/component/menu 在使用elementUI的时候发现,能够展开的导航栏是不能展开的,效果这里先不演示了。可以在上边的网站上看到。 现在有

  • VBox中有两个按钮。如果单击第一个按钮,然后按“tab”,焦点框架将移动到第二个按钮。所以我的问题是,如果我想使用“tab”来实现其他功能,我该如何更改、取消或阻止JavaFX中默认的“tab”功能呢?

  • 问题内容: 假设我有以下3个Angular UI Router状态: 如果直接转换为,我该如何告诉Angular UI Router进入状态? 理想情况下,我想要的是这样的: 然后,在我的代码中,我希望$ state.go(’adminCompanies’)等同于$ state.go(’adminCompanies.list’) 问题答案: 由于您的应用程序当前已设置,因此您不需要任何明确的逻辑。