jest全局变量示例

时间:2016-06-27 17:56:43

标签: jestjs

有人可以举例说明如何使用jest globals吗?

{
  ...
  "jest": {
    "globals": {
      "__DEV__": true,
    }
  }
  ...
}

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

由于

5 个答案:

答案 0 :(得分:29)

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

"jest": {
    "globals": {
       "__DEV__": true,
       "__RCTProfileIsProfiling": false
     },
     ...
},

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

答案 1 :(得分:1)

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

在文件夹中运行jest --init后,在Jest制作的jest.config.js文件中,向下滚动以查找:

// A set of global variables that need to be available in all test environments
// globals: {},

取消注释第二行,并将所有全局变量放在其中。

答案 2 :(得分:1)

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

此模式也有助于使第三方库也可以作为全局变量用于Jest测试(例如Backbone,jQuery,lodash等)-例如。 global.Backbone = require('backbone');,依此类推。

(重新提交作为答案,因为以前只是迈克尔·赫尔维(Michael Helvey)回答下的评论。)

答案 3 :(得分:1)

要共享对象变量(不仅仅是与配置的 globals 属性一样的原语),您可以使用 testEnvironment 属性。

Jest's Git 中有更多解释

答案 4 :(得分:0)

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

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

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

global.TIMEOUT = 3000;