Хороший способ избавиться от ошибки linter без неиспользуемых выражений с chai
в моих тестах Chai я часто обнаруживаю, что хочу использовать их утверждения, которые являются чем-то вроде .to.be.empty
, .to.be.true
e.т. c., потому что я нахожу их более чистыми для чтения, чем .to.be.length(1)
или .to.be.equal(true)
. Однако, это разбивает мое Линтер (я с помощью Airbnb по умолчанию пылеобразования).
я мог бы использовать // disable-eslint-line
синтаксис, но тогда мне пришлось бы добавить его к каждой строке, которая читается так, и это кажется утомительным.
Я также читал о DirtyChai библиотеки, но это потребует от меня вернуться через всю мою тестовую библиотеку, добавив к ним скобки, что кажется чем-то, что мне не нужно делать, просто чтобы заставить мой Линтер передать что-то, с чем он, вероятно, должен быть в порядке в первую очередь.
кто-нибудь знает лучший способ справиться с этим, чем способы, которые я изложил выше?
5 ответов
есть несколько решений/подходов. Вы можете просто отключить правило для всего файла, используя eslint-disable
в верхней части файла, о котором идет речь:
/* eslint-disable no-unused-expressions */
expect(someTrueValue).to.be.true;
однако добавление этого в верхней части каждого тестового файла также может быть утомительным. Другой вариант-отключить это правило для всех файлов в определенной папке (это также позволяет отключить другие правила, которые обычно отключены, но становятся хлопотными при тестировании, например no-underscore-dangle
при использовании rewire
).
вы можете сделать это, поставив .eslintc
конфигурационный файл в том же каталоге, что и ваши тестовые файлы, настроенные для отключения этого правила. Это позволяет использовать конфигурацию по умолчанию для всех других правил, игнорируя это правило только для файлов в этой папке. ESLint называет это Configuration Cascading
.
просто нашел другой вариант, используя Относительная Glob-Шаблоны:
в своем :
overrides: [
{
files: "*.test.js",
rules: {
"no-unused-expressions": "off"
}
}
]
Я сделал маленький плагин под названием eslint-plugin-chai-friendly
, который переопределяет значение по умолчанию no-unused-expressions
правило и делает его дружественным к чай. Измененное правило игнорирует expect
и should
операторы, сохраняя при этом поведение по умолчанию для всего остального.
в случае, если кто-то натыкается на это сегодня, у меня была та же проблема и нашел это решение на документация eslint. В файле конфигурации eslint можно указать одну или несколько сред, которые будут предопределять глобальные переменные для этой среды. Для нас, это было бы mocha
, и вы настроите это в своем .eslintrc.json
:
{
"env": {
"mocha": true
},
...
...
...
}
в результате он удалит все ложноположительные о мокко describe
, it
, beforeEach
, etc. без необходимости полностью отключить eslint или полностью отключить любое конкретное правило.
протестировано с ESLint В. 4.11 и мокко 5.0
объединение ответ 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
.