Как написать файл конфигурации Jest

Я пытаюсь передать файл конфигурации Jest, чтобы запускать тесты только из заданного каталога.

Согласно документации, вы можете использовать config.testPathDirs: https://facebook.github.io/jest/docs/api.html#config-testpathdirs-array-string, и вы можете вызвать jest --config=<config-file>.

К сожалению, в документации нет описания того, как должен выглядеть файл конфигурации.

Я пробовал оба этих варианта в jest-config.js файле:

testPathDirs = ['coredata/src'];

а также

config.testPathDirs(['coredata/src']);

и побежал:

$ jest --config=jest-config.js

... но я получаю такую ​​ошибку:

$ jest --config=jest-config.js
Using Jest CLI v0.4.0
Failed with unexpected error.

/Users/carles/dev/azazo/coredata/node_modules/jest-cli/src/jest.js:179
      throw error;
            ^
SyntaxError: Unexpected token c
    at Object.parse (native)
    at /Users/carles/dev/azazo/coredata/node_modules/jest-cli/src/lib/utils.js:291:23
    at _fulfilled (/Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:798:54)
    at self.promiseDispatch.done (/Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:827:30)
    at Promise.promise.promiseDispatch (/Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:760:13)
    at /Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:574:44
    at flush (/Users/carles/dev/azazo/coredata/node_modules/jest-cli/node_modules/q/q.js:108:17)
    at process._tickCallback (node.js:419:13)

person Carles Barrobés    schedule 04.05.2015    source источник


Ответы (5)


Я понял, что файл конфигурации - это JSON.

{
  "testPathDirs": ["coredata/src"]
}

К сожалению, я нигде в документации не нашел намека на это.

person Carles Barrobés    schedule 04.05.2015
comment
в вашем package.json: jest: {testPathDirs: [app /]}, - person han4wluc; 11.01.2016
comment
Документацию можно найти здесь facebook.github.io/jest/docs/api.html < / а> - person hakunin; 30.06.2016
comment
Прямо сейчас testsPathDirs был изменен на root, как указано здесь: jest root config - person LucasPadovan; 08.03.2017
comment
Я не согласен с ответом здесь. Я разместил свой собственный в надежде прояснить, насколько он прост по состоянию на август 2017 года. Он не требует, чтобы ваш файл конфигурации был в формате json. - person Dan Zuzevich; 18.08.2017
comment
Учтите, что этому ответу ›2 года в быстро меняющемся мире :) - person Carles Barrobés; 05.09.2017
comment
Это устарело с roots и rootDir - person Siva; 08.01.2018

Мне кажется, вы можете настроить jest прямо в своем package.json, см. https://github.com/shidhincr/react-jest-gulp-jspm-seed/blob/master/package.json.

{
  "name": "react-jest-gulp-seed",
  "version": "1.0.0",
  "description": "Seed for React Jest Gulp Project",
  "main": "index.js",
  "scripts": {
    "test": "jest",
    "postinstall": "jspm install"
  },
  "jest": {
    "scriptPreprocessor": "./preprocessor.js",
    "testPathIgnorePatterns": [
      "/node_modules/",
      "/jspm_packages"
    ],
    "unmockedModulePathPatterns": [
      "./node_modules/react"
    ]
  },
  "author": "Shidhin CR <[email protected]> (http://www.undefinednull.com/)",
  "license": "ISC",
  "dependencies": {
    "del": "^1.1.1",
    "gulp": "^3.8.11",
    "gulp-filter": "^2.0.2",
    "gulp-load-plugins": "^0.10.0",
    "gulp-react": "^3.0.1",
    "gulp-shell": "^0.4.1",
    "harmonize": "^1.4.1",
    "jest-cli": "^0.4.1",
    "jspm": "^0.15.5",
    "react": "^0.13.2",
    "react-tools": "^0.13.2",
    "run-sequence": "^1.1.0"
  },
  "devDependencies": {
    "browser-sync": "^2.7.1",
    "gulp": "^3.8.11"
  },
  "jspm": {
    "directories": {},
    "dependencies": {
      "react": "npm:react@^0.13.2"
    },
    "devDependencies": {
      "babel": "npm:babel-core@^5.1.13",
      "babel-runtime": "npm:babel-runtime@^5.1.13",
      "core-js": "npm:core-js@^0.9.4"
    }
  }
}
person Volker Rose    schedule 21.08.2015
comment
Что мне поместить в файл package.json в jest, если я хочу использовать отдельный файл конфигурации для настройки jest? - person Panshul; 20.12.2016
comment
@Panshul, когда вы вызываете jest в тестовом скрипте, вы передаете путь к файлу конфигурации типа jest --config ./config/jest-config.js - person stone; 07.02.2017
comment
Вопрос в конфигурационном файле, а не в package.json. Ответ недействителен - person Firanolfind; 30.07.2018

По состоянию на текущую дату 5 октября 2018 года я смог легко настроить файл конфигурации jest, не требуя, чтобы он был в формате JSON.

Мой раздел скриптов package.json:

"scripts": {
    "start": "node server.js",
    "dev": "webpack-dev-server --hot --inline",
    "test": "jest --config ./jest-config.js",
    "build": "webpack",
    "postinstall": "webpack"
  }

Я решил оставить файл jest-config в корневом каталоге вместе с package.json, чтобы он указывал именно туда, но вы можете разместить его где угодно. Вот конфигурационный файл, хоть и немного короткий:

module.exports = {
  verbose: true,
  setupTestFrameworkScriptFile: "./enzyme.js",
  roots: [
    "../__tests__"
  ],
  modulePaths: [
    "./__stubs__"
  ],
  moduleNameMapper: {
    ".scss$": "scss-stub.js"
  }
}

В документации Jest в разделе «Настройка Jest» (ссылка здесь) говорится что вы можете создать его с помощью объекта module.exports. Они включают предупреждение: «Пожалуйста, имейте в виду, что полученная конфигурация должна быть JSON-сериализуемой», что усугубляет путаницу. "Восхитительное тестирование Javascript!" Ха!

P.S. Свойство root в конфигурации сообщает Jest, где искать все ваши тесты. Думал, что это может помочь.

person Dan Zuzevich    schedule 18.08.2017
comment
что, если файл конфигурации машинописный - person TheEhsanSarshar; 26.07.2021

Для JEST V20 +:

{
 "roots": ["__tests__/"]
}

Для v 20- вы получите следующее предупреждение, если используете testPathDirs:

Предупреждение об устаревании:

Опция testPathDirs была заменена на «корни».

Jest теперь обрабатывает вашу текущую конфигурацию как: {"root": ["tests / unit /"]}

Пожалуйста, обновите вашу конфигурацию.

person JS dev    schedule 05.02.2018

Документы были обновлены, чтобы объяснить конфигурацию. Вот ссылка для тех, кто ищет дополнительную информацию:

https://facebook.github.io/jest/docs/en/configuration.html#content

Суть:

Если вы используете --config <path/to/json>, чтобы направить jest в файл конфигурации json, вы помещаете в файл только информацию JSON без ключевого слова jest.

// config.json at <path/to/json>
{
   "verbose": true
}

Если вы хотите использовать package.json для настройки jest, добавьте ключ «jest», а затем свою конфигурацию.

// package.json 
{ 
   "name": "packageName",
   "version": "1.0.0",
   "jest": {
     "verbose": true
   }
}
person Valerie    schedule 12.04.2017
comment
Спасибо @Valerie - к сожалению, эта ссылка 404ing. - person Alexander Nied; 17.10.2017
comment
Текущая ссылка (по состоянию на октябрь 2017 г.): facebook.github.io/jest /docs/en/configuration.html#content - person Alexander Nied; 17.10.2017