Тестирование двух сред с помощью шутки

Я хотел бы установить две разные среды и иметь возможность запускать обе в режиме просмотра.

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

На самом деле я запускаю jest дважды для каждой среды, предоставляя для каждой свой файл конфигурации:

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

Но это не позволяет мне запускать оба одновременно.


person Juan Je García    schedule 25.12.2016    source источник


Ответы (2)


EDIT (январь 2018 г.):

Теперь это возможно (начиная с Jest v20), и эта опция называется projects. Узнайте больше об в документации.

По сути, вы можете определить массив своих проектов, в которых вы хотите запускать 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.

Не стесняйтесь прыгать и оставлять комментарии!

person Michał Pierzchała    schedule 14.02.2017
comment
Я вижу, что это возможно с Jest 20+. Как теперь это правильно настроить? Нужны ли мне, например, разные jest.config.js? EDIT: Итак, я нашел решение: один из способов, которым я это сделал, - это взять исходную конфигурацию jest верхнего уровня и поместить ее в массив projects для исходной среды, а затем определить вторую конфигурацию. для моей среды Node. Похоже, это работает с одним (1) определенным файлом jest.config.js! - person Con Antonakos; 21.01.2018
comment
Отлично у вас получилось! Вы также можете передать массив путей к своим проектам или даже глобус, где каждый проект должен иметь какую-то конфигурацию (либо jest.config.js, либо jest запись в package.json). - person Michał Pierzchała; 22.01.2018

Вы также можете использовать @jest-environment docblock для настройки тестовых сред для каждого файла. :

/**
 * @jest-environment jsdom
 */

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