用玩笑测试两个环境

Testing two environments with jest

我想设置两个不同的环境,并且能够运行都处于手表模式。

|-- /server
|     |-- index.js  <-  Node
|-- /client
|     |-- index.js  <-  jsdom
|-- package.json

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

$ yarn test -- --config=server.config.json
$ yarn test -- --config=client.config.json 

但这不允许我同时运行两者。

编辑(2018 年 1 月):

现在可以这样做(自 Jest v20 起),该选项称为 projects。详细了解 it the docs

基本上,您可以定义一组您希望 Jest 成为 运行 的项目:

{
  "projects": ["<rootDir>/client", "<rootDir>/server", "<rootDir>/some-glob/*"]
}

记住每个项目都需要有自己的配置。如果您希望配置自动获取,请将其放入 jest.config.js 文件中,或者通常放在 package.json 中。

如果您更喜欢将配置放在其他地方(例如 configs/jest.js),您需要指向配置文件的路径(正确设置 rootDir 选项):

{
  "projects": ["<rootDir>/client/configs/jest.js", "<rootDir>/server/configs/jest.js"]
}

原始答案:

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

随时加入并发表评论!

您还可以使用 the @jest-environment docblock 为每个文件设置测试环境:

/**
 * @jest-environment jsdom
 */

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