在 Jest 中的每个测试之前运行全局测试设置

     2023-02-22     152

关键词:

【中文标题】在 Jest 中的每个测试之前运行全局测试设置【英文标题】:Running a global test setup before each test in Jest 【发布时间】:2018-07-21 05:35:51 【问题描述】:

我正在尝试在我的 Jest 测试套件中的每个测试之前执行测试设置功能。我知道我可以使用 beforeEach 在单个测试文件中完成此操作,但我想对我的所有测试文件全局执行此操作而无需显式修改每个单个文件。

我查看了jest configuration file,并注意到一些认为可能有效的配置:globalSetupsetupFiles,但它们似乎只运行一次(在测试运行的最开始时)。就像我说的,我需要在测试文件中的“每个”it 块之前运行它。

这可能吗?

【问题讨论】:

我知道这根本没有帮助,但我认为在 Jest 中没有办法做到这一点。 【参考方案1】:

您可以使用 setupFilesAfterEnv(替换 setupTestFrameworkScriptFile,从 jest 版本 24.x 中弃用),它将在每次测试之前运行

// package.json

  // ...
  "jest": 
    "setupFilesAfterEnv": ["<rootDir>/setupTests.js"]
  

而在setupTests.js,可以直接写:

global.beforeEach(() => 
  ...
);

global.afterEach(() => 
   ...
);

【讨论】:

注意:这行得通,但正如@Alvin Lee 在下面指出的那样:“setupTestFrameworkScriptFile 已被弃用,取而代之的是 setupFilesAfterEnv” 对我不起作用... global.beforeEach 不是函数。 @geoidesic 使用 setupFilesAfterEnv 而不是 setupTests (顾名思义,届时将设置包括 beforeEach 在内的测试环境) 这不再起作用了。您必须将setupFilesAfterEnv 添加到jest.config.js【参考方案2】:

正如@zzz 的答案的后续,最近的documentation on Configuring Jest 注释:

注意:setupTestFrameworkScriptFilesetupFilesAfterEnv 取代。

所以现在,您的文件应该如下所示:

// package.json

  // ...
  "jest": 
    "setupFilesAfterEnv": [
      "<rootDir>/setupTests.js"
    ]
   

【讨论】:

【参考方案3】:

setupFilesAfterEnv 配置是可行的方法,是的,您可以在该文件中使用beforeEach,它将在所有套装的每个测试中运行。

// jest.config.js

module.exports = 
  setupFilesAfterEnv: ['<rootDir>/tests/setupTests.ts']


// tests/setupTests.ts

beforeEach(() => 
  console.log('before each')
)

afterEach(() => 
  console.log('after each')
)

试试看!

【讨论】:

在 py.test 中的每个测试之前和之后运行代码?

】在py.test中的每个测试之前和之后运行代码?【英文标题】:Runcodebeforeandaftereachtestinpy.test?【发布时间】:2014-05-0221:17:49【问题描述】:我想在我的测试套件中的每个测试之前和之后运行额外的设置和拆卸检查。我查看了固定... 查看详情

如何在 Python 中的每个单元测试之前和之后运行特定代码

】如何在Python中的每个单元测试之前和之后运行特定代码【英文标题】:Howtoarunspecificcodebefore&aftereachunittestinPython【发布时间】:2015-06-0501:21:45【问题描述】:以下是我在文件中的测试结构。类设置测试01测试02测试03拆解我需... 查看详情

在 Jest 测试之前无法加载 Google Maps API

】在Jest测试之前无法加载GoogleMapsAPI【英文标题】:Can\'tloadGoogleMapsAPIbeforeJesttests【发布时间】:2022-01-2103:36:46【问题描述】:如何在jest运行任何测试之前全局加载GoogleMapsAPI?迁移到NX,我已将我的库@bespunky/angular-google-maps从karma... 查看详情

成组运行 Jest 测试套件

】成组运行Jest测试套件【英文标题】:RunJesttestsuitesingroups【发布时间】:2018-10-1418:21:01【问题描述】:我正在通过Jest和supertest为新API编写大量测试。在运行测试之前,我正在设置一个测试数据库并在其中填充用户:测试命令jes... 查看详情

如何在手表模式下进行任何摩卡测试之前运行全局设置脚本

】如何在手表模式下进行任何摩卡测试之前运行全局设置脚本【英文标题】:HowcanIrunaglobalsetupscriptbeforeanymochatestinwatchmode【发布时间】:2019-11-0500:18:41【问题描述】:我想以TDD方式(--watch模式)运行mocha测试,效果很好。但我有... 查看详情

一个文件中的测试是不是在 Jest 中并行运行?

】一个文件中的测试是不是在Jest中并行运行?【英文标题】:AretestsinsideonefileruninparallelinJest?一个文件中的测试是否在Jest中并行运行?【发布时间】:2017-02-1110:03:29【问题描述】:文档中的Jest状态:“Jest虚拟化JavaScript环境并... 查看详情

Test::Unit 中的全局设置和拆卸块

】Test::Unit中的全局设置和拆卸块【英文标题】:GlobalsetupandteardownblocksinTest::Unit【发布时间】:2009-11-1504:16:55【问题描述】:在整个测试套件(不仅仅是一个测试类)中的每个方法之前运行设置的最佳方法是什么?Rspec允许您定... 查看详情

Nuxt.js 中的 Jest 全局插件

】Nuxt.js中的Jest全局插件【英文标题】:JestGlobalPlugininNuxt.js【发布时间】:2021-06-0419:20:25【问题描述】:我正在尝试模拟一个在jest单元测试中的created()挂钩上运行的插件,但是,我不断返回TypeError:this.$translationsisnotafunction,这... 查看详情

使用 .ts 文件 (TypeScript) 配置 Jest 全局测试设置

】使用.ts文件(TypeScript)配置Jest全局测试设置【英文标题】:ConfigureJestglobaltestssetupwith.tsfile(TypeScript)【发布时间】:2018-06-2708:16:21【问题描述】:我正在使用ts-jest(Jest和TypeScript)并且想要配置所有测试套件的一些全局设置(初... 查看详情

我如何在 react 中的 node_modules 文件夹上运行 jest 测试

】我如何在react中的node_modules文件夹上运行jest测试【英文标题】:howdoirunjesttestonanode_modulesfolderinreact【发布时间】:2019-05-0518:21:07【问题描述】:我添加了我自己的另一个项目作为依赖项。现在它在node_modules文件夹中运行npmtest... 查看详情

如何在每次测试之前重置 Jest 模拟函数调用计数

...试一个函数是否被调用。我注意到mock.calls.length并没有为每个测试重置,而是在累积。如何在每次测试之前将其设为0?我不希望我的下一个测试取决于之前的结果。我知道J 查看详情

PHPUnit -setUp() - 它在每个测试用例之前和之后运行吗?

...布时间】:2016-01-0704:35:01【问题描述】:我还是对PHPUnit中的setup()有点困惑。它是否在之前和之后每个测试用例运行?例如,我想在每次测试之前清理我的文章表,但我想保留我已经注入表中的测试数据。因为我只想在下次测试... 查看详情

使用 Jest 测试时未定义全局节点配置变量

】使用Jest测试时未定义全局节点配置变量【英文标题】:Globalnode-configvariableundefinedwhentestingwithJest【发布时间】:2019-11-2619:45:00【问题描述】:我正在实施来自node-configdocs的选项2。这运行良好,并且我的全局配置变量是在测试... 查看详情

如何让 Jest 按特定顺序运行测试?

】如何让Jest按特定顺序运行测试?【英文标题】:HowtomakeJestruntestsinaspecificorder?【发布时间】:2018-08-2104:47:37【问题描述】:我正在使用Jest运行Selenium测试。我希望在其他webapp功能测试之前进行登录测试。我可以使用jest-i按顺序... 查看详情

用 Jest 只运行一个测试

】用Jest只运行一个测试【英文标题】:RunonlyONEtestwithJest【发布时间】:2017-11-1019:30:00【问题描述】:我只想用Jest运行一个测试。我使用it.only或describe.only,但它仍然运行大量测试。我认为它运行了自我上次提交以来的所有测试... 查看详情

Monorepo 中的 Jest 项目无法在项目中找到配置文件

】Monorepo中的Jest项目无法在项目中找到配置文件【英文标题】:JestProjectsinaMonorepounabletofindconfigfilesinprojects【发布时间】:2020-06-0609:32:29【问题描述】:在设置Jest项目时遇到问题。项目A有一些它运行的额外配置(setupJest、创建... 查看详情

JEST @vue/composition-api + Jest 测试套件无法运行 [vue-composition-api] 在使用任何函数之前必须调用 Vue.use(VueComposition

】JEST@vue/composition-api+Jest测试套件无法运行[vue-composition-api]在使用任何函数之前必须调用Vue.use(VueCompositionAPI)【英文标题】:JEST@vue/composition-api+JestTestsuitefailedtorun[vue-composition-api]mustcallVue.use(VueCompositionAPI)beforeusing 查看详情

如何在 Jest 的自定义测试环境文件中使用 TypeScript?

...量,因此我设置了一个自定义环境以在我的jest.config.json中的testEnvironment选项中使用以实现此目的。对于我们的项目,我们有一个用于se 查看详情