Jest集成测试-如何管理全局上下文?

时间:2018-06-23 08:30:58

标签: integration-testing jestjs

Jest似乎并没有允许所有测试运行共享一个用于集成测试的全局上下文。它确实具有globalSetup和globalTeardown选项,但似乎这些挂钩并非旨在成为所有测试运行中的共享测试上下文。您可以使用这些钩子将某些东西放在一起,通过节点进程传递变量,但是随后会出现其他问题(断言期间Array构造函数的不同实例,等等)。

如果我的集成测试设置过程相当繁重,是否建议我只进行一次测试运行,我所有的集成测试都将在其中运行并可以访问共享上下文?

目前,我的集成测试分布在多个文件(各个入口点)中,并导入设置过程。但是,该安装过程每个文件只运行一次。我假设可以有一个入口点,然后在同一上下文中导入所有集成测试文件。这是一个好的/推荐的选择吗?

设置用于Jest的集成测试的推荐方法是什么?

1 个答案:

答案 0 :(得分:0)

我已经结合使用了两种解决方案来解决此问题:

  1. 最好的setupTestFrameworkScriptFile:https://jestjs.io/docs/en/23.x/configuration#setuptestframeworkscriptfile-string
  2. NodeJS全局对象:https://stackabuse.com/using-global-variables-in-node-js/

使用一次性设置,我只能执行一次设置,并将结果作为变量存储在NodeJS全局对象中。

示例:

// package.json

"jest": {
  "setupTestFrameworkScriptFile": "<rootDir>/globalSetupFile.js"
}
// globalSetupFile.js

global.globalUser = createGlobalUser();
// testFile.spec.js

loginAsUser(global.globalUser.email, global.globalUser.password);