用jest测试两个环境

Jua*_*cía 17 jestjs

我想设置两个不同的环境,并能够在监视模式下运行.

|-- /server
|     |-- index.js  <-  Node
|-- /client
|     |-- index.js  <-  jsdom
|-- package.json
Run Code Online (Sandbox Code Playgroud)

实际上我为每个环境运行两次jest,为每个环境提供不同的配置文件:

$ yarn test -- --config=server.config.json
$ yarn test -- --config=client.config.json 
Run Code Online (Sandbox Code Playgroud)

但这并不能让我同时兼顾两者.

Mic*_*ała 18

编辑(2018年1月):

现在可以这样做(自Jest v20起),并调用该选项projects.阅读更多关于文档的内容.

基本上,您可以定义要在其中运行Jest的项目数组:

{
  "projects": ["<rootDir>/client", "<rootDir>/server", "<rootDir>/some-glob/*"]
}
Run Code Online (Sandbox Code Playgroud)

只记得每个项目都需要有自己的配置.如果你想自动选择配置,把它放在jest.config.js文件中或者通常放在文件中package.json.

如果您希望将配置放在其他位置(例如,在configs/jest.js),则需要指向配置文件的路径(rootDir正确设置选项):

{
  "projects": ["<rootDir>/client/configs/jest.js", "<rootDir>/server/configs/jest.js"]
}
Run Code Online (Sandbox Code Playgroud)

原始答案:

目前这是不可能的,但对于这种情况存在问题:https://github.com/facebook/jest/issues/1206.

随意跳进去发表评论!


Ale*_*ksi 6

您还可以使用@jest-environment文档块来设定测试环境在每个文件的基础:

/**
 * @jest-environment jsdom
 */

test('use jsdom in this test file', () => {
  const element = document.createElement('div');
  expect(element).not.toBeNull();
});
Run Code Online (Sandbox Code Playgroud)