jest global variable example

2020-06-30 09:16发布

Can someone give an example on how to use jest globals?

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

Do I specify the globals in the package.json file or do I create a folder with a js file where the globals should be defined?

Thanks

标签: jestjs
4条回答
Evening l夕情丶
2楼-- · 2020-06-30 09:33

For me using the Jest config file worked much better because it is a Javascript file itself so it gives full freedom:

After running jest --init in your folder, in the jest.config.js file Jest makes, scroll down to find:

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

Uncomment the second line and put all your globals in there.

查看更多
倾城 Initia
3楼-- · 2020-06-30 09:37

If you are using create-react-app, you must use the src/setupTests.js file instead of pointing to a file via setupFiles in the package.json file.

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

In the src/setupTests.js file, you can define globals like so:

global.TIMEOUT = 3000;
查看更多
【Aperson】
4楼-- · 2020-06-30 09:43

Yep. You put the globals in the package.json. For example, here's an excerpt from the default react-native jest configuration:

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

This will make the variables available globally when the tests are run.

查看更多
做自己的国王
5楼-- · 2020-06-30 09:51

A cleaner way to add globals would be to set "setupFiles": "<rootDir>/private/jest/setup.js" in package.json, and then create a setup.js file that sets global.__DEV__ = true.

This pattern is helpful for making 3rd party libraries available as globals to Jest tests as well (like Backbone, jQuery, lodash, etc.) - eg. global.Backbone = require('backbone'); and so on.

(Re-submitting this as an answer as it was previously just a comment under Michael Helvey's answer.)

查看更多
登录 后发表回答