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

如何在笑话中清除模拟函数中的间谍

曾洲
2023-03-14

如何在玩笑中清除模拟函数中的间谍?如果原始函数不是jest.restoreAllmocks()的话,jest.fn()工作得非常好。如何正确清除jest.fn()中的所有间谍?这个问题可能是如何在单个测试基础上更改模拟实现[Jestjs]的重复,尽管我的问题描述了一个不涉及多个模块的更简单的场景。

describe('Mock', () => {
  const mock = {
    method1: jest.fn().mockReturnValue(false),
  };

  afterEach(() => {
    // none of these clear the spy
    jest.clearAllMocks();
    jest.resetAllMocks();
    jest.restoreAllMocks();
  });

  it('returns false by default', () => {
    expect(mock.method1()).toEqual(false);
  });

  it('changes return value after applying spy implementation', () => {
    jest.spyOn(mock, 'method1').mockReturnValue(true);

    expect(mock.method1()).toEqual(true);
  });

  // this test fails
  it('resets to original value after each test', () => {
    expect(mock.method1()).toEqual(false);
  });
});

共有1个答案

阙俊友
2023-03-14

为了从Jest中的模拟函数中清除间谍,我们可以使用Jest.clearAllMocks()命令。

 类似资料:
  • 问题内容: 我的组件测试文件中有一个像这样的模拟模块 这些函数将在我的组件的渲染函数中调用以隐藏和显示某些特定功能。 我想对这些模拟函数的返回值的不同组合进行快照。 假设我有一个这样的测试用例 要运行此测试用例,我想更改模拟模块函数的返回值以使其动态变化 因为我已经一次导入了组件,所以我的模拟模块不会再次重新导入。所以它不会改变。我该如何解决? 问题答案: 您可以模拟该模块,以便它返回间谍并将其导

  • 我有下面的打字稿类,我想测试在笑话。 这是我的测试: 如何模拟MyClass中使用的foo函数,以使测试通过?

  • 我尝试在vuex的操作中使用vue路由器,这在本地主机上运行良好。 然而,当我试图通过从存储文件导入操作来准备存储(模拟)时,我得到了错误。 你能帮我解决这个问题吗? 版本 错误msg app/src/main。js app/src/store/main。js 应用程序/src/路由器/main.js 应用程序/测试/组件/主。测验js 组件

  • 问题内容: 我有一个依赖于导出变量的文件。此变量设置为,但是如果需要,可以将其设置为手动设置,以防止下游服务请求时出现某些行为。 我不确定如何在Jest中模拟变量,以便更改测试和条件的值。 例: 问题答案: 如果将ES6模块语法编译为ES5,则此示例将起作用,因为最后,所有模块导出都属于同一对象,可以对其进行修改。 另外,您可以切换到raw commonjs 函数,并借助以下方法做到这一点:

  • 如何模拟以下代码?我不想更改代码。 我的代码: 我怎么能嘲笑它呢?我发现很难嘲笑它。 我该怎么解决呢? 注意:我不想更改我的代码。在不改变代码的情况下,我不得不模仿这两行代码。

  • null 如上所示,它导出了一些命名函数,而且重要的是 使用了 。 开玩笑地说,当我为 编写单元测试时,我希望模拟 函数,因为我不希望 中的错误影响我为 编写的单元测试。我的问题是我不确定最好的方法是: 如有任何帮助/洞察力,我们将不胜感激。