当前位置: 首页 > 知识库问答 >
问题:

如何使用Jest测试void javascript函数?

施喜
2023-03-14

如何使用jest框架测试void javascript函数(一个不返回任何东西的函数)?你能提供一个同样的例子吗?

/**
 * this function is used to toggle the input type password field
 * @param element {DOMElement} - field to be toggled
 */
export const togglePassword = (element) => {
    const type = element.getAttribute('type');
    if (type === 'text') {
        element.setAttribute('type', 'password');
    } else {
        element.setAttribute('type', 'text');
    }
}

我们如何测试这种类型的函数?

共有1个答案

袁河
2023-03-14

测试void函数的最佳方法是模仿其依赖项的行为。

// module being tested
import sideEffect from 'some-module';

export default function () {
    sideEffect();
}

使用文件模拟和函数期望,您可以断言函数按预期调用了其他模块:

import hasSideEffect from './hasSideEffect';
import sideEffect from 'some-module';

jest.mock('some-module');

test('calls sideEffect', () => {
    hasSideEffect();

    expect(sideEffect).toHaveBeenCalledTimes(1);
    expect(sideEffect).toHaveBeenCalledWith();
});
 类似资料:
  • 问题内容: 首先,我遵循Flux架构。 我有一个显示秒数的指示器,例如:30秒。每显示一秒,它就会少显示一秒钟,因此29、28、27直到0。当到达0时,我清除间隔,使其不再重复。而且,我触发一个动作。派遣此操作后,我的商店会通知我。因此,发生这种情况时,我将间隔重置为30秒,依此类推。组件看起来像: 组件工作正常。现在,我想用Jest测试它。我知道我可以使用renderIntoDocument,然

  • 问题内容: 我正在用React Native构建一个应用程序。我想尽量减少与数据库通信的频率,因此我大量使用了AsyncStorage。虽然在DB和AsyncStorage之间的转换中存在很多错误的余地。因此,我想通过对它运行自动化测试来确保AsyncStorage拥有我相信的数据。令人惊讶的是,我还没有找到有关如何在线进行操作的任何信息。我自己尝试做的尝试还没有完成。 使用笑话: 此方法失败,并

  • 问题内容: 任何人都可以告诉我如何在安装调用组件时开玩笑地等待一个模拟的诺言解决吗? 将在我的笑话嘲笑测试 然后是我的测试文件: 问题是我正在返回,因为尚未进行模拟的api调用和生命周期方法。 问题答案: Jest有模拟假冒时间旅行的方法,要在您的情况下使用它,我想您可以按照以下样式更改代码: 另外,您也可以使用

  • null null 对上述重试功能执行以下测试。 总是传递一个承诺进行解析,重试函数在第一次执行时解析/li> 我以为写这些开玩笑的时候会是这样的。 因此,它失败,出现以下错误。 我认为,这将是可以管理的设置在笑话关于这个错误。但是,从根本上说,我不知道如何在Jest中测试promise递归处理。

  • 问题内容: 我对Jest和测试来说相对较新。我有一个带有输入元素的组件: 我想要一个测试来检查输入元素的功能是否以输入元素的属性作为参数。这是我到目前为止所走的距离: 我从这里的第一个解决方案开始模拟Jest And中的按钮单击:https : //facebook.github.io/jest/docs/en/mock- functions.html 编辑:运行以上会引发以下错误: 问题答案:

  • 使用玩笑和酶,我如何测试这一点。道具。功能测试运行了吗? 开玩笑的是,我试着创建mockProps,并在安装组件时传递它们。 控制台。登录componentDidMount函数会将functionToTest显示为未定义。显然,在坐骑过程中通过道具是不起作用的。 问题1:如何传入将在componentDidMount函数中显示的模拟道具? 问题2:一旦该函数可用,我如何获得该函数的访问权限,以便在