Таблицы данных Cucumberjs — как превратить их в .raw()

Итак, я реализовал таблицу данных Cucumberjs, однако я не думаю, что сделал это правильно. Вот что у меня есть

this.And(/^If I click the row "([^"]*)" then I should the following nested information$/, function (rowName, data) {
        resultPage.clickRow(rowName);
        data = dataTable.raw();
        return console.log(data);
    });

И мой шаг корнишона выглядит как

Then If I click the row "Summary" then I should the following nested information
      | Tax       | 11.50
      | Gratuity  | 4.50
      | Total     | 26.59

прямо сейчас я просто пытаюсь получить эту таблицу и распечатать ее, чтобы убедиться, что она возвращается в правильном формате, но я получаю ошибку лексирования, и тест даже не запускается. Как вы можете реализовать это в Javascript ?? Кажется, я не могу найти какую-либо документацию или примеры в Интернете для cucumberjs, но, конечно, есть несколько для java/cucumber.

Кроме того, я понимаю, что ошибка лексирования связана с тем, что ожидается, что это будет набросок сценария, и что я не указал Пример: перед таблицей. Однако это не должно быть наброском сценария. Это должна быть таблица данных.


person Tree55Topz    schedule 29.11.2016    source источник
comment
Какую ошибку вы получаете?   -  person Grasshopper    schedule 29.11.2016
comment
Ошибка лексирования в строке, с которой начинается моя таблица   -  person Tree55Topz    schedule 29.11.2016
comment
Одна вещь, которую я заметил в таблице, это то, что вам нужно заканчивать каждую строку разделителем, т.е. '|'. Не уверен, что это ошибка копирования-вставки.   -  person Grasshopper    schedule 29.11.2016
comment
@Grasshopper О, дерьмо, это сделало это! Нет, это была моя собственная ошибка: P Сейчас он работает, но я получаю data.raw не является функцией. Тот же результат, если я попробую data.hashes   -  person Tree55Topz    schedule 29.11.2016
comment
Не уверен в этом, так как никогда не кодировался в огурце javascript, но в приведенном выше коде вы используете dataTable.raw() вместо data.raw(). Сказать, что данные becoz - это параметр, который вы используете в функции, которую огурец заполнит данными, содержащимися в данных.   -  person Grasshopper    schedule 29.11.2016
comment
Я понял. На самом деле это было потому, что я изменил функцию, когда пытался ее исправить, и изменил порядок параметров. Если я держу его в rowName, данные отлично работают. Спасибо за вашу помощь!   -  person Tree55Topz    schedule 29.11.2016


Ответы (2)


Ответ на этот вопрос на самом деле не очень далек от исходного вопроса. Мне не хватало дополнительного '|' с правой стороны стола.

Then If I click the row "Summary" then I should the following nested information
      | Tax       | 11.50  |
      | Gratuity  | 4.50   |
      | Total     | 26.59  |

Кроме того, убедитесь, что определение шага javascript содержит параметры в порядке их использования. Таким образом, в этом случае верно то же определение шага, что и в вопросе.

this.And(/^If I click the row "([^"]*)" then I should the following nested information$/, function (rowName, data) {
        resultPage.clickRow(rowName);
        data = dataTable.raw();
        return console.log(data);
    }); 

Это было на удивление легко по сравнению с примерами, которые я видел для огурца/java. Cucumberjs действительно нужно улучшить свою документацию.

person Tree55Topz    schedule 29.11.2016
comment
Cucumberjs действительно нужно улучшить свою документацию. истинный - person user2451016; 04.10.2018

вы можете проверить данные таблицы некоторыми встроенными методами.

(table.rows(),table.hashes(),table.rowsHash())

вы можете найти реализацию вышеуказанных методов по адресу (https://github.com/cucumber/cucumber-js/blob/master/features/data_tables.feature)

person renu dadhich    schedule 06.10.2020