jest全局变量示例

tad*_*das 25 jestjs

有人可以举例说明如何使用jest全局变量吗?

{
  ...
  "jest": {
    "globals": {
      "__DEV__": true,
    }
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

我是否在package.json文件中指定了全局变量,还是创建了一个带有js文件的文件夹,其中应该定义全局变量?

谢谢

Mic*_*vey 41

是的.你把全局变量放在package.json中.例如,这里是默认的react-native jest配置的摘录:

"jest": {
    "globals": {
       "__DEV__": true,
       "__RCTProfileIsProfiling": false
     },
     ...
},
Run Code Online (Sandbox Code Playgroud)

这将使测试运行时全局变量可用.

  • 添加全局变量的一种更简洁的方法是在package.json中设置`"setupFiles":"<rootDir> /private/jest/setup.js",然后创建一个设置`global .__ DEV__ = true`的文件.这种模式有助于使第三方库可用作Jest测试的全局变量(如Backbone,jQuery,lodash等) - 例如.`global.Backbone = require('backbone');` (9认同)
  • 如果需要,您还可以访问全局变量,如`global .__ DEV__`. (3认同)

nic*_*ang 18

添加全局变量的一种更"setupFiles": "<rootDir>/private/jest/setup.js"简洁的方法是在 package.json 中进行设置,然后创建一个 setup.js 文件,将global.__DEV__ = true.

这种模式有助于使 3rd 方库也可以作为 Jest 测试的全局变量(如 Backbone、jQuery、lodash 等)——例如。global.Backbone = require('backbone');等等。

(重新提交这个作为答案,因为它以前只是 Michael Helvey 答案下的评论。)

  • global.__DEV__ 只是[全局参数文档中的示例](https://jestjs.io/docs/en/configuration#globals-object),它只能从 jest.config.js 设置可访问的全局值。[setupFiles](https://jestjs.io/docs/en/configuration#setupfiles-array) 在每个测试文件之前运行,并且可以从测试文件访问其中定义的全局变量。[globalSetup](https://jestjs.io/docs/en/configuration#globalsetup-string) 在所有测试文件之前运行;内部定义的全局变量无法从测试文件访问,不幸的是从 setupFiles 也不能访问。 (2认同)

Ste*_*eve 10

如果您使用 create-react-app,则必须使用该src/setupTests.js文件,而不是通过 package.json 文件中的 setupFiles 指向文件。

https://create-react-app.dev/docs/running-tests/#srcsetuptestsjs

在该src/setupTests.js文件中,您可以像这样定义全局变量:

global.TIMEOUT = 3000;
Run Code Online (Sandbox Code Playgroud)


小智 5

对我来说,使用 Jest 配置文件效果更好,因为它本身就是一个 Javascript 文件,因此它提供了完全的自由:

jest --init在您的文件夹中运行后,在jest.config.jsJest 生成的文件中,向下滚动以找到:

// A set of global variables that need to be available in all test environments
// globals: {},
Run Code Online (Sandbox Code Playgroud)

取消注释第二行并将所有全局变量放在那里。