Определить трансформатор для таблицы в Cucumberjs

Имея следующий сценарий

Scenario: Mutate multiple User Skills at the same time
    Given the follogin "User Skills":
      | ID | name     | level |
      | 1  | Pilot    | A     |
      | 1  | Sealer   | B     |
      | 2  | Pilot    | A     |
      | 2  | Sealer   | B     |
    When I send "Update Users Skills Mutation"
    Then the "Users" must contain the following "Skills" correspondingly:
      | ID | name     | level |
      | 1  | Pilot    | A     |
      | 1  | Sealer   | B     |
      | 2  | Pilot    | A     |
      | 2  | Sealer   | B     |

Как я могу определить тип параметра, соответствующий таблице?

defineParameterType({
   name: 'user skill table',
   regexp: ???,
   transformer: (table) =>{
      return world.createSkillFromTable(table)
   }
})

В документации Ruby есть совпадение для таблиц данных как /^table:column1,column2$/, но я могу найти способ сопоставлять таблицы в CucumberJS, есть ли способ сделать это?


person Coding Edgar    schedule 22.12.2017    source источник


Ответы (1)


Вот один из способов обработки таблиц в определении шага cucubmer-js.

Используя ваш первый шаг Given в качестве примера, первым параметром будут навыки пользователя, вторым параметром будет объект, который содержит вашу таблицу, с ключами (с учетом регистра), взятыми из заголовка таблицы.

Given(/the following "(.*)":$/, function (type, table){        
    const rows = table.hashes();
    rows.forEach( (row) => {
        console.log("ID:", row.ID);
    });        
);

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

person paulitto    schedule 27.03.2018