Как мне правильно обрабатывать случаи переключения в сочетании с cucumber с помощью JavaScript?

#javascript #cucumberjs

#javascript #cucumberjs

Вопрос:

Я пытаюсь использовать случай переключения, чтобы сделать повторно используемый тестовый шаг с использованием JavaScript.

Тем не менее, cucumber предполагает, что мой шаг не определен, и я не уверен, почему.

Рассматриваемый функциональный шаг заключается в следующем:

Когда я ищу «людей» с именем «CharacterSearch»

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

 When('I search for {string} with name {string}', async (type, name) => {
  switch(type) {
    case "planets":
      await searchFormPO.planetsRadioButton.click();
      break;
    case "people":
      await searchFormPO.peopleRadioButton.click();
      break;
    default:
      throw 'Please use planets or people as type input for this testcase.';
  }
  await searchFormPO.input.click;
  await searchFormPO.input.sendKeys(name);
  await searchFormPO.searchBtn.click();
});
 

Ошибка, отображаемая при запуске моего теста, выглядит следующим образом:

    Undefined. Implement with the following snippet:

     When('I search for {string}', function (string) {
       // Write code here that turns the phrase above into concrete actions
       return 'pending';
     });
 

Это предполагает, что мой код должен быть функцией, которую я уже пробовал.
Но мои навыки JS немного устарели, поэтому я, возможно, что-то упускаю из виду.

Я пробовал гуглить случаи переключения в JS с помощью cucumber, но не могу найти выход из этого.

Комментарии:

1. Насколько вы уверены, что Cucumber понимает async функции (которые всегда возвращают обещания)?

2. Я нет, я родом из Java, и асинхронная обработка JS в сочетании с cucumber для меня в новинку.

3. Ну, он может понимать асинхронные функции, но ваша функция ничего не возвращает (что объясняет undefined жалобу).

4. Я только что проверил это на своих шагах асинхронного тестирования, и они также ничего не возвращают, но работают просто отлично. Сбой происходит исключительно с случаем переключения.

5. Невозможно, чтобы a switch в подобной функции приводило к сбою.

Ответ №1:

Этот код работает нормально, проблема заключалась в ошибочно отображенном старом файле функций.