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

说笑,如何在每个描述块之前运行一段代码进行模拟?

郎正初
2023-03-14

有数百个jest测试文件,在每个单元测试文件中可能有多个descripe块。

在每个描述块之前,是否有配置或方法自动运行代码块进行模拟和设置?

我知道一种残忍的方法,就是在数百个文件中的每个描述块中放入beforeAll(),但这太多了。我尝试了jest配置对象,但没有找到任何有用的选项。


共有1个答案

穆商震
2023-03-14

您可以使用setupfileafterenv配置。

例如,我将模拟所有测试文件的axios模块。为了确保您的测试使用mockedaxios而不是实际的axios实现,请通过添加setupFileAfterEnv更新您的jest.config.js,如下所示:

/a.test.ts

import axios from 'axios';

describe('66341555 - a', () => {
  it('should pass', () => {
    expect(jest.isMockFunction(axios)).toBeTruthy();
  });
});

/b.test.ts

import axios from 'axios';

describe('66341555 - b', () => {
  it('should pass', () => {
    expect(jest.isMockFunction(axios)).toBeTruthy();
  });
});

axios.mock.js

jest.mock('axios');

jest.config.js

module.exports = {
  preset: 'ts-jest/presets/js-with-ts',
  setupFilesAfterEnv: ['./axios.mock.js'],
};

测试结果:

 PASS  examples/66341555/b.test.ts
 PASS  examples/66341555/a.test.ts

Test Suites: 2 passed, 2 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        3.493 s, estimated 4 s

这里有一个真实的例子:https://github.com/yeahoffline/redis-mock#example-usage

 类似资料:
  • 问题内容: 我有一个正在Linux上运行的C ++应用程序,我正在对其进行优化。如何确定我的代码哪些区域运行缓慢? 问题答案: 如果您的目标是使用探查器,请使用建议的探查器之一。 但是,如果您急于在主观上很慢的情况下在调试器下手动中断程序,则有一种简单的方法可以查找性能问题。 暂停几次,每次查看调用堆栈。如果有一些代码浪费了一定百分比的时间(20%或50%或其他),那么这就是您在每次采样时都将其捕

  • 问题内容: 我正在尝试在运行mako内核的Nexus 4的所有cpus上设置性能监视器用户模式启用寄存器。 现在,我在可加载模块中设置寄存器: 问题是on_each_cpu仅在Online cpus上运行该功能,如printk语句所示: 当我调用on_each_cpu时,只有四个在线。所以我的问题是,如何强制cpu联机,或者如何强制某个cpu执行代码?谢谢 问题答案: 你并不需要运行在每个CPU的

  • 我想在测试套件中的每个测试之前和之后运行其他设置和拆卸检查。我看过赛程,但不确定它们是否是正确的方法。我需要在每次测试之前运行设置代码,并且需要在每次测试后运行拆卸检查。 我的用例是检查没有正确清理的代码:它会留下临时文件。在我的设置中,我将检查文件,在拆解中我也会检查文件。如果有额外的文件,我希望测试失败。

  • 我想我错过了一些关于之前和之前的方式。我有一个规范文件,加载数据从夹具在之前的方法。这些数据中的一部分被用在之前的函数中,然后又被用在之前的函数中,以及在实际的测试中。规范文件包含2个测试。第一个测试按预期执行。第二个失败,因为beForeeach表示来自夹具的值之一未定义。 我的期望是,如果我加载数据从一个夹具在之前的方法,它应该是可用于所有测试规范文件。 在执行“检查按钮栏的状态”时,测试be

  • 问题内容: 我的代码结构如下: 事件 消息 其他代码 功能测试 在jacoco的构建脚本中,首先它必须复制所有类并使用该类目录在其上运行该工具。您能在这里描述目标目录的步骤吗?我的意思是我该如何提及在其上运行代码覆盖率的目录。 构建后,每个文件夹都有其自己的目标文件夹,并在其旁边具有类。 步骤如下: 在詹金斯将项目建设作为工作 部署到用户阶段 在詹金斯(Jenkins)运行jacoco报告工作 J

  • 我有一个多模块项目Spring启动项目,其中每个模块生成一个jar。每个模块都有一个带有junit5测试的。有没有办法在特定模块中的中的所有测试执行之前和之后运行代码?例如,如果我有2个模块A和B我想要。 在模块A中的所有测试执行之前运行代码 运行所有测试模块A执行的代码 在模块B中的所有测试执行之前运行代码 在模块B中的所有测试执行后运行代码