Вопрос:

Если в сообщении об ошибке "guard-for-in" не ясно, как работать с for-in

javascript automation cucumber eslint for-in-loop

1943 просмотра

2 ответа

70 Репутация автора

Я работаю с Cucumber JS, и я хочу заполнить некоторые поля в приложении, поэтому я использую for-in для получения данных из rowHash, но я получаю сообщение об ошибке «Тело for- in должен быть включен в оператор if, чтобы отфильтровать нежелательные свойства из прототипа guard-for-in: «Я не уверен, как мне кодировать мои for-in с помощью if внутри for.

это мой код:

this.fillRequiredfields = function(dataTable){
  var rows = dataTable.rowsHash();
  for (var row in rows) {
    var val = rows[row];

    if (row === 'firstname') {
      element(by.name('firstName')).sendKeys(val).isPresent();
    }
    if (row === 'lastname') {
      element(by.name('lastName')).sendKeys(val).isPresent();
    }
    if (row === 'emailaddress') {
      element(by.name('emailAddress')).sendKeys(val).isPresent();
    }
    if (row === 'displayname') {
      element(by.name('displayName')).sendKeys(val).isPresent();
    }
    if (row === 'password') {
      element(by.name('newPassword')).sendKeys(val).isPresent();
    }
  }
};

Поэтому, когда я пытаюсь выполнить коммит в git, я получаю "охрану" от eslint. Если кто-то может объяснить мне, как мне следует поступить, если в будущем это может быть хорошо.

Надеюсь, ты сможешь мне помочь.

Автор: burq24 Источник Размещён: 11.01.2018 08:14

Ответы (2)


3 плюса

70 Репутация автора

Решение

Я уже решил это, в моем случае решение было:

вместо

var val = rows[row];

Я добавляю if с hasOwnProperty (), вот так:

if (rows.hasOwnProperty(row))

Итак, код такой:

for (var row in rows) {
  if (rows.hasOwnProperty(row)){

    if (row === 'firstname') {
      element(by.name('firstName')).sendKeys(rows[row]).isPresent();
    }
    if (row === 'lastname') {
      element(by.name('lastName')).sendKeys(rows[row]).isPresent();
    }
    if (row === 'emailaddress') {
      element(by.name('emailAddress')).sendKeys(rows[row]).isPresent();
    }
    if (row === 'displayname') {
      element(by.name('displayName')).sendKeys(rows[row]).isPresent();
    }
    if (row === 'password') {
      element(by.name('newPassword')).sendKeys(rows[row]).isPresent();
    }
  }
}

Надежда может помочь кому-то еще.

Автор: burq24 Размещён: 17.01.2018 06:18

0 плюса

45 Репутация автора

В некоторых редких случаях

if (rows.hasOwnProperty(row))

может вызвать нежелательный эффект (например, если это функция hasOwnProperty ()). Вот почему предложенный метод

Object.prototype.hasOwnProperty.call(rows, row)
Автор: Vans Размещён: 07.05.2019 01:47
Вопросы из категории :
32x32