Хороший способ избавиться от ошибки linter без неиспользованных выражений с chai

В моих тестах Чай я часто хочу использовать их утверждения, которые являются чем-то вроде.to.be.empty, .to.be.true например, потому что я считаю, что они читаются чище, чем.to.be.length(1) или же.to.be.equal(true), Однако, это ломает мой линтер (я использую линтинг Airbnb по умолчанию).

Я мог бы использовать// disable-eslint-line синтаксис, но тогда я должен был бы добавить его к каждой строке, которая выглядит так, и это кажется утомительным.

Я также читал оDirtyChai библиотекой, но для этого мне нужно было бы вернуться через всю мою тестовую библиотеку, добавив в них скобки, что, похоже, то, что мне не нужно было делать, просто чтобы заставить мой носитель передать что-то, с чем, вероятно, все будет в порядке.

Кто-нибудь знает лучший способ справиться с этим, чем способы, которые я описал выше?

Ответы на вопрос(5)

Если сегодня кто-то сталкивается с этим, у меня возникла та же проблема, и я нашел это решение надокументация eslint, В вашем файле конфигурации eslint вы можете указать одну или несколько сред, которые будут предопределять глобальные переменные для этой среды. Для нас это было быmochaи вы настроите так в своем.eslintrc.json:

{
    "env": {
        "mocha": true
    },
    ...
    ...
    ...
}

В результате он удалит все ложные срабатывания о моккоdescribe, it, beforeEachи т. д. без необходимости полного отключения eslint или полного отключения какого-либо конкретного правила.

Протестировано с ESLint v.4.11 и mocha 5.0

 GrayedFox21 февр. 2019 г., 10:16
Это не отвечает на вопрос, который о Чайshould() а такжеassert методы.
 dmudro07 нояб. 2018 г., 21:43
Это правильная вещь. По моему опыту, утверждение Чая все равно не будет выполнено, хотя Чай и Мокко - это две разные вещи, поэтому вы хотите позаботиться об этом отдельно. Ответ Скотта выше, кажется, является наиболее эффективным решением для Чая.

Объединяяответ Йональварецца сИгорь Дьяченко ответ дал мне именно то, что я хотел:

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': 'error',
    },
  }],
  // ...
}

Таким образом,no-unused-expression правило будет отменено только в*.test.js файлы Иno-unused-expression Правило все еще будет действовать, чтобы перехватывать любые неиспользуемые выражения в тестовых файлах, которые не связаны сchai.

 Scott Rudiger06 нояб. 2018 г., 19:40
Ты прав. Я оглянулся на свой код, и у меня есть какchai-friendly/no-unused-expressions': 'error', Не стесняйтесь вносить изменения, или, если нет, я сделаю это через несколько дней.
 dmudro05 нояб. 2018 г., 18:14
Отличная идея. Разве не должно быть включено второе правило в вашем примере кода? я. е.'chai-friendly/no-unused-expressions': 2
Решение Вопроса

Вы можете отключить правило для всего файла, используяeslint-disable в верхней части рассматриваемого файла:

/* eslint-disable no-unused-expressions */
expect(someTrueValue).to.be.true; 

Однако добавление этого в начало каждого тестового файла может быть утомительным. Чтобы отключить это правило для всех соответствующих файлов, вы можете:

Поставить новый.eslintc конфигурационный файл в том же каталоге, что и ваши тестовые файлы, настроенный на отключение этого правила. Это позволяет использовать конфигурацию по умолчанию для всех других правил, игнорируя это правило только для файлов в этой папке. ESLint называет этоConfiguration Cascading.

{
    "rules": {
        "no-unused-expressions": "off"
    }
}

Использоватьoverrides введите свой главный.eslintrc подать вотключить правила для групп файлов с сопоставлением с шаблоном шара:

{
    "overrides": [
        {
            "files": ["*.test.js", "*.spec.js"],
            "rules": {
                "no-unused-expressions": "off"
            }
        }
    ]
}

Это также позволяет отключить другие правила, которые становятся проблематичными при тестировании, такие какno-underscore-dangle когда используешьrewire.

 Ben Hare12 июн. 2016 г., 20:29
Это действительно классная функция (каскадирование конфигурации), о которой я не знал, спасибо! Не идеальное решение для того, что я хотел бы, так как я бы хотел, чтобы оно заботилось только об этих конкретных случаях использования, но достаточно для того, что я пытаюсь сделать.
 Jim07 мая 2018 г., 17:11
Почему этот ответ оno-underscore-dangle? Можете ли вы объяснить, что положить в .eslintrc, чтобы ответить на оригинальный вопрос опа?

Я сделал маленькийплагин называетсяeslint-plugin-chai-friendly который отменяет значение по умолчаниюno-unused-expressions править и делает его дружелюбным по отношению к чай. Измененное правило игнорируетexpect а такжеshould заявления, сохраняя поведение по умолчанию для всего остального.

 Jules Dupont06 февр. 2018 г., 16:54
+1. Это должен быть принятый ответ, потому что это означает, что вам не нужно отключать правило для всего тестового файла (так что вы все равно получаете преимущества правила, когда оно применяется). Спасибо за плагин!
 GaryO06 мая 2019 г., 16:54
Если вы пишете машинопись, то теперь для nspm есть эквивалентный плагин:tslint-no-unused-expression-chai.

Просто нашел другой вариант, используяОтносительные образцы шара:

В вашем.eslintrc файл:

overrides: [
    {
        files: "*.test.js",
        rules: {
            "no-unused-expressions": "off"
        }
    }
]

Ваш ответ на вопрос