Хороший способ избавиться от ошибок-нерегулярных ошибок с chai
В моих тестах Chai я часто нахожу, что хочу использовать их утверждения, которые являются чем-то вроде .to.be.empty
, .to.be.true
т.д., Потому что я считаю, что их чище читать, чем .to.be.length(1)
или .to.be.equal(true)
. Однако это ломает мой linter (я использую по умолчанию Airbnb linting).
Я мог бы использовать синтаксис //disable-eslint-line
, но тогда мне пришлось бы добавлять его к каждой отдельной строке, которая читается так, и это кажется утомительным.
Я также читал о библиотеке DirtyChai, но это потребовало бы, чтобы я вернулся через всю свою библиотеку тестирования, добавляя к ним скобки, которые кажутся мне чем-то, что мне не нужно делать просто, чтобы заставить мой линтер пройти что-то, в порядке вещей.
Кто-нибудь знает более хороший способ справиться с этим, чем те, которые я изложил выше?
Ответы
Ответ 1
Есть несколько решений/подходов, которые вы можете предпринять. Вы можете просто отключить правило для всего файла, используя eslint-disable
в верхней части файла, о котором идет речь:
/* eslint-disable no-unused-expressions */
expect(someTrueValue).to.be.true;
Однако добавление этого в начало каждого тестового файла также может быть утомительным. Другой вариант, чтобы отключить это правило для всех файлов в определенной папке (это также позволяет отключить другие правила, которые обычно отключены, но становятся хлопотно в тестировании, таких как no-underscore-dangle
при использовании rewire
).
Это можно сделать, поместив .eslintc
конфигурации .eslintc
в тот же каталог, что и ваши тестовые файлы, настроенный для отключения этого правила. Это позволяет использовать конфигурацию по умолчанию для всех других правил, игнорируя это правило только для файлов в этой папке. ESLint вызывает эту Каскадную Configuration Cascading
.
Ответ 2
Просто нашел другой вариант с использованием шаблонов Relative Glob:
В файле .eslintrc
:
overrides: [
{
files: "*.test.js",
rules: {
"no-unused-expressions": "off"
}
}
]
Ответ 3
Я сделал небольшой плагин под названием eslint-plugin-chai-friendly
который отменяет правило no-unused-expressions
по умолчанию и делает его дружественным к chai. Измененное правило игнорирует утверждения expect
и should
, сохраняя поведение по умолчанию для всего остального.
Ответ 4
В случае, если кто-то наткнется на это сегодня, у меня была та же проблема и нашел это решение в документации eslint. В конфигурационном файле eslint можно указать одну или несколько сред, которые предопределяют глобальные переменные для этой среды. Для нас это будет mocha
, и вы настроились бы таким образом в своем .eslintrc.json
:
{
"env": {
"mocha": true
},
...
...
...
}
В результате он удалит все ложные данные о мокко describe
, it
, beforeEach
и т.д., Не требуя полностью отключить eslint или полностью отключить любое конкретное правило.
Протестировано с ESLint v.4.11 и моккой 5.0
Ответ 5
Комбинация ответа jonalvarezz с ответом Игоря Дьяченко дала мне именно то, что я хотел:
npm install --save-dev eslint-plugin-chai-friendly
// .eslintrc.js
module.exports = {
// ...
plugins: ['chai-friendly'],
overrides: [{
files: '*.test.js',
rules: {
'no-unused-expressions': 'off',
'chai-friendly/no-unused-expressions': 'off',
},
}],
// ...
}
Таким образом, правило no-unused-expression
будет переопределяться только в файлах *.test.js
И все еще no-unused-expression
правило неиспользованного выражения, чтобы поймать любые неиспользуемые выражения в тестовых файлах, которые не связаны с chai
.