Cucumber JS: я получаю ошибку "table.rows ()" не является допустимой функцией ", когда я передаю таблицу и еще одну переменную в шаг def - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь проверить значения от datatable огурца до внешнего интерфейса. Тест работает нормально, когда я передаю только datatable для моего шага def, но когда я передаю переменную вместе с datatable; тест прерывается и выдает ошибку " table.rows () не является допустимой функцией "

Вот мой файл функций:

Тогда информация о ученике для ученика "1761" должна быть правильной на странице списка учеников

| Имя | ID | Отдел № | | Монни | 123 | 1761 |

Определение шага:

Then(/^the student info for student "([^"]*)" should be correct in the fund list page$/, function (table, studNumber) {
let testTable = table.rows();
return this.pages.prd2Page.getCellInfo(studNumber).then((actualTexts) => {

return assert.deepEqual(testTable.toString(), actualTexts.toString());
//return console.log(actualTexts.toString());
});
});

Как видите, я передаю данные и переменную. Если я удаляю переменную и жёстко кодирую значение везде для переменной. Этот тест проходит. Может ли кто-нибудь поделиться информацией о том, в чем может быть проблема здесь?

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Вам необходимо указать все переменные, которые вы передаете в определение шага.

Также необходимо учитывать порядок параметров. Стол проходит в конце.

Пример:

Then I order from "Dominos" a pizza for 4 ppl
  | Size  | Crust   |  Sauce  | Cheese     | 
  | 13.5  | Stuffed |  Tomato | Mozzarella |

Здесь у вас есть (по порядку):

  • Название пиццерии
  • количество человек
  • таблица данных

Определение:

Then(/^I order from "(.*)" a pizza for (\d) ppl$/, function (pizza_place, ppl_num, table) {
  console.log('Buy from: ' + pizza_place);
  console.log('For ' + ppl_num + ' people');

  const input = table.hashes()
  console.log('Size: ' + input[0].Size);
  console.log('Crust: ' + input[0].Crust);
  console.log('Sauce: ' + input[0].Sauce);
  console.log('Cheese: ' + input[0].Cheese);
});

Вывод будет:

Buy from: Dominos
For 4 people
Size: 13.5
Crust: Stuffed
Sauce: Tomato
Cheese: Mozzarella
0 голосов
/ 30 апреля 2018

Я попробовал то, чего вы хотите достичь с помощью этого шага (шаг может показаться глупым, это всего лишь тест):

Then I should see these in Missing required fields popup "test"
            | fieldName    |
            | Category     |

Автоматически сгенерированное определение шага:

Then(/^I should see "([^"]*)" these in Missing required fields popup$/, function(arg1, callback) {
  // Write code here that turns the phrase above into concrete actions
  callback(null, 'pending');
});

Кажется, невозможно передать параметр и таблицу одновременно. Вместо этого вы можете передать stdNumber в функцию getCellInfo, используя значения в таблице:

    Then(/^the student info for student "([^"]*)" should be correct in the fund list page$/, function (table, studNumber) {
      table.rows().forEach(row => {
          return this.pages.prd2Page.getCellInfo(row[2]).then((actualTexts) => {
            return assert.deepEqual(row.toString(), actualTexts.toString());
            //return console.log(actualTexts.toString());
            });
          });

      });
    }

огурец справка также объясняет альтернативные способы использования.

примечание: мой пример - машинопись

...