Как я могу остановить ошибки jshint в моем веб файле для globals?

У меня есть тестовый файл script, который выглядит следующим образом:

var TestPage = function () {

    this.detailsTab = element(by.id('detailsTab'));
    ..

Это дает мне много ошибок, говорящих, что element и by не определены. Есть ли способ, с помощью которого я могу остановить все эти ошибки подсказки?

Ответ 1

На странице справочника утяжелителя вы можете увидеть, что эти глобальные переменные создаются Protactor:

Здесь используются глобальные переменные element и by, которые также создаются Транспортир.

Итак, вам нужно указать JSHint об этих глобальных комбинациях. Вы можете сделать это в своей конфигурации для JSHint. http://www.jshint.com/docs/

Метод встроенной конфигурации

Один из способов настройки JSHint - использование дополнительных встроенных комментариев. Ниже приведен фрагмент, взятый из страницы документов JSHint, в которой описывается, как указать глобальное использование метода конфигурации встроенного комментария.

globals - директива для указания JSHint о глобальных переменных, которые определены в другом месте. Если значение false (по умолчанию), JSHint будет считать, что переменная как только для чтения. Используйте его вместе с опцией undef.

/* global MY_LIB: false */

Обновление: Итак, для транспортиратора встроенная конфигурация:

/* global element */
/* global by */

или, как было предложено @runTarm, этот сжатый синтаксис также будет работать:

/* global element, by */


Файл файла конфигурации

Вы также можете настроить JSHint с помощью файлов конфигурации. Проверьте документацию на различные способы указания файла конфигурации. На странице docs приведена следующая выдержка, в которой объясняется, как написать файл, чтобы указать глобальную переменную.

Файл конфигурации - это простой JSON файл, который указывает, какой JSHint варианты включения или выключения. Например, следующий файл включит предупреждения о undefined и неиспользуемых переменных и сообщить JSHint о глобальная переменная с именем MY_GLOBAL.

{
  "undef": true,
  "unused": true,
  "predef": [ "MY_GLOBAL" ]
}

Ответ 2

Вот пример файла .jshint с удаляемыми глобалями:

{
    "node": true,
    "browser": true,
    "esnext": true,
    "bitwise": true,
    "camelcase": true,
    "curly": true,
    "eqeqeq": true,
    "immed": true,
    "indent": 4,
    "latedef": true,
    "newcap": true,
    "noarg": true,
    "quotmark": "single",
    "undef": true,
    "unused": true,
    "strict": true,
    "trailing": true,
    "smarttabs": true,
    "multistr": true,
    "globals": {
        "after": false,
        "afterEach": false,
        "angular": false,
        "before": false,
        "beforeEach": false,
        "browser": false,
        "describe": false,
        "expect": false,
        "inject": false,
        "it": false,
        "jasmine": false,
        "spyOn": false,
        "Kinetix": false,
        "$": false
    }
}

Ответ 3

фактическая конфигурация .jshintrc для транспортира

если вы хотите избавиться от предупреждений jshint для транспортира, обновление .jshintrc - лучший подход. добавление глобальных переопределений в файл довольно утомительно.

добавьте следующее в ваш файл .jshintrc (вы должны добавить файл .jshintrc в каталог, содержащий ваши тесты, а не корень/весь ваш источник)

.jshintrc:

  {
   ... your other jshint stuff ...
   "jasmine": true,
   "mocha": true,
   "globals": {
     "angular": false,
     "browser": false,
     "inject": false,
     "_": false,
     "driver": false,
     "protractor": false,
     "browser": false,
     "$": false,
     "$$": false,
     "element": false,
     "by": false,
     "list": false
    }
  }

что это делает: (вам может не понадобиться жасмин/мокка в зависимости от того, как вы написали свои тесты)

  • Жасмин требуется для таких вещей, как expect
  • mocha требуется для таких вещей, как beforeEach -
  • глобальные переменные - это другие вещи, которые протрактор определяет как глобальные - см. https://github.com/angular/protractor/blob/master/lib/runner.js#L152