Как я автоматически проверяю звонки «.only», случайно оставленные в спецификациях Mocha? - PullRequest
0 голосов
/ 03 января 2019

Иногда я забываю удалить вызовы .only из своих спецификаций Mocha, прежде чем вносить изменения в спецификацию.Это, очевидно, влияет на тестовое покрытие, которое требует устранения ошибок.Я хотел бы поймать их, прежде чем вносить изменения, в идеале, как часть процесса линтинга с ESLint и с минимальными усилиями.

Ответы [ 3 ]

0 голосов
/ 03 января 2019

У вас есть параметр --forbid-only, который нужно передать при выполнении mocha, что сделает ваши тесты неудачными.

У вас также есть --forbid-pending.

Здесь из официального документа:

- только для запрета вызывает тестирование, помеченное только для сбоя, комплект

- ожидание для запрета вызывает отложенные тесты и тестированиепомечен как пропущенный для сбоя комплекта

0 голосов
/ 03 января 2019

Вы ищете правило mocha/no-exclusive-tests, часть плагина eslint-plugin-mocha.Это терпит неудачу, если он находит describe.only или it.only.Очень полезно!

Из документов:

Для этого плагина требуется ESLint 4.0.0 или более поздняя версия.

npm install --save-dev eslint-plugin-mocha

Затем добавьтессылка на этот плагин и выбранные правила в вашей конфигурации eslint:

{
  "plugins": [
    "mocha"
  ],
  "rules": {
    "mocha/no-exclusive-tests": "error"
  }
}

Существует также mocha/no-skipped-tests, если вы хотите предотвратить фиксацию it.skip или xit.Тем не менее, я считаю, что .skip иногда допустим, поэтому я считаю, что лучше всего просто запретить .only.

Этот плагин также имеет массу других полезных проверок, поэтому обязательно прочитайте их документы!

0 голосов
/ 03 января 2019

Мое решение состояло в том, чтобы использовать простой bash-скрипт с командой grep, добавленной в раздел package.json scripts, например:

"scripts": {
  "lint:only": "RESULT=\"$(grep -rHn '[.]only\\|[.]skip' spec/ --color=always)\"; if [ -n \"$RESULT\" ]; then printf \"Oops! You left a few things in your specs! \n\n${RESULT}\n\n\"; fi",
  "lint": "eslint --ext js src config scripts bin config server; yarn lint:only"
  ...
}

В двух словах, это проверяет каталог spec/ на наличие чего-либо, совпадающего с .only или .skip, и выводит имя файла + строку, если обнаруживается что-либо нарушающее. Цвет добавлен для ясности, и скрипт запускается как часть связывания с ESLint и Yarn.

...