有人可以举例说明如何使用jest globals吗?
{
...
"jest": {
"globals": {
"__DEV__": true,
}
}
...
}
我是否在package.json文件中指定了globals,还是创建了一个带有js文件的文件夹,其中应该定义全局变量?
由于
答案 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;