2016-11-21 6 views
5

В приложении узла, где я использую Jest для проверки кода на стороне клиента (testEnvironment: «jsdom») и кода на стороне сервера (testEnvironment: «node»), а также для сбора покрытия кода как на стороне клиента, так и на стороне сервера.Есть ли способ продлить файл конфигурации jest?

В настоящее время я использую 4 конфигурационных файла Jest с большим количеством избыточной конфигурации, чтобы выполнить это.

клиент

{ 
    "bail": true, 
    "verbose": true, 
    "notify": true, 
    "scriptPreprocessor": "./node_modules/babel-jest", 
    "testPathIgnorePatterns": [ 
    "./node_modules", 
    "./coverage", 
    "./dist", 
    "./build" 
    ], 
    "testRegex": "\\.test\\.js" 
} 

покрытие клиент

{ 
    "bail": true, 
    "verbose": true, 
    "notify": true, 
    "scriptPreprocessor": "./node_modules/babel-jest", 
    "testPathIgnorePatterns": [ 
    "./node_modules", 
    "./coverage", 
    "./dist", 
    "./build" 
    ], 
    "testRegex": "\\.test\\.js", 
    "collectCoverageFrom": ["**/*.js", "!**/node_modules/**"], 
    "collectCoverage": true, 
    "coverageDirectory": "./coverage", 
    "coveragePathIgnorePatterns": [ 
    "./node_modules", 
    "./coverage", 
    "./dist", 
    "./build", 
    "./test" 
    ], 
    "coverageThreshold": { 
    "global": { 
     "branches": 100, 
     "functions": 100, 
     "lines": 100, 
     "statements": 100 
    } 
    } 
} 

сервер

{ 
    "bail": true, 
    "verbose": true, 
    "notify": true, 
    "scriptPreprocessor": "./node_modules/babel-jest", 
    "testPathIgnorePatterns": [ 
    "./node_modules", 
    "./coverage", 
    "./dist", 
    "./build" 
    ], 
    "testRegex": "\\.test\\.js", 
    "testEnvironment": "node" 
} 

покрытие сервера

{ 
    "bail": true, 
    "verbose": true, 
    "notify": true, 
    "scriptPreprocessor": "./node_modules/babel-jest", 
    "testPathIgnorePatterns": [ 
    "./node_modules", 
    "./coverage", 
    "./dist", 
    "./build" 
    ], 
    "testRegex": "\\.test\\.js", 
    "testEnvironment": "node", 
    "collectCoverageFrom": ["**/*.js", "!**/node_modules/**"], 
    "collectCoverage": true, 
    "coverageDirectory": "./coverage", 
    "coveragePathIgnorePatterns": [ 
    "./node_modules", 
    "./coverage", 
    "./dist", 
    "./build", 
    "./test" 
    ], 
    "coverageThreshold": { 
    "global": { 
     "branches": 100, 
     "functions": 100, 
     "lines": 100, 
     "statements": 100 
    } 
    } 
} 

Как я могу достичь этого, не повторяя свою конфигурацию 4 раза? Я просмотрел опцию конфигурации preset. Используя это, я должен создать отдельный пакет для каждой конфигурации. Это рекомендуемый способ?

ответ

1

Да, с Jest v20 вы можете определить конфигурацию как JS-файл и использовать его для совместного использования общих частей подобных конфигураций. Docs on configuring Jest.

По умолчанию Шутка выглядит для:

  • jest.config.js
  • "jest" запись в package.json

... и рассматривает родительский каталог в качестве rootDir.

Также не забудьте проверить опцию projects, что упрощает запуск Jest внутри monorepos (например, клиент + серверный код в одной кодовой базе). См. Этот ответ для справки: Testing two environments with jest

Смежные вопросы