Как я могу использовать --changedSince и --onlyChanged в шутку?

Я хочу использовать для шутки флаг изменено и onlyChanged. Я изменил множество тестов, а также файлы, от которых зависят тесты. И согласно документации флагов jest cli:

changedSince: Runs tests related the changes since the provided branch. If the current branch has diverged from the given branch, then only changes made locally will be tested.

onlyChanged: Alias -o. Attempts to identify which tests to run based on which files have changed in the current repository. Only works if you're running tests in a git/hg repository at the moment and requires a static dependency graph (ie. no dynamic requires).

Но когда я запускаю jest --changedSince=master или jest --onlyChanged, он запускает 0 тестов, вообще ничего не передавая в терминал.

jest --listTests перечисляет все тесты. Однако, когда я запускаю jest --listTests --changedSince=master или jest --listTests --onlyChanged, в нем нет тестов.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
6 627
2

Ответы 2

Я обнаружил, что --changedSince и --onlyChanged тоже немного напуганы. Однако вы можете использовать пухлый и Jest --findRelatedTests и добавить их в ловушку перед фиксацией.

--findRelatedTests {spaceSeparatedListOfSourceFiles}: Find and run the tests that cover a space separated list of source files that were passed in as arguments. Useful for pre-commit hook integration to run the minimal amount of tests necessary. Can be used together with --coverage to include a test coverage for the source files, no duplicate --collectCoverageFrom arguments needed.

Вот изменения, которые вам нужно сделать в вашем файле package.json.

{
  "scripts": {
    "test": "CI=true jest",
    "test:staged": "CI=true jest --env=jsdom --findRelatedTests"
  }
}

И,

"lint-staged": {
  "src/**/*.js": [
    "test:staged",
    "git add"
  ]
}

Таким образом, при каждой фиксации Jest будет запускать тесты только для связанных исходных файлов. Не забудьте установить переменную окружения CI=true, иначе ваши тесты будут работать в режиме просмотра и никогда не закончатся.

Если вы все же хотите запустить полный набор тестов, npm test подойдет. Кроме того, лучше иметь среду CI для запуска всех ваших тестов, когда вы нажимаете на ветку или отправляете запрос на перенос.

вы можете использовать флаг '-o' для запуска измененного тестового файла в режиме просмотра. https://jestjs.io/docs/en/cli

jest -o

Другие вопросы по теме