Как преобразовать параметр в таблице примера в целое число в функции Cucumber?

Если у меня есть функция, которая выглядит так:

Feature: My feature
  Scenario Outline: My scenario outline.
    Given foo
    When bar
    Then I get the status code "<Status Code>".

  Examples:
   | StatusCode |
   |        200 |

и такое определение шага:

@Then("I get the status code {int}.")

Cucumber жалуется и говорит, что шаг не определен, поскольку ожидается, что тип будет {string}. Есть ли способ указать тип объекта или таблицы примера? Я изучил TypeRegistryConfiguration, но не могу понять, как заставить его работать с файлами функций.

Используйте <Status Code>, а не "<Status Code>".

M.P. Korstanje 30.04.2024 16:50

Или \"{int}\" если кавычки важны.

M.P. Korstanje 30.04.2024 16:51

@M.P.Korstanje, вот и все, спасибо! Я не осознавал, что добавление кавычек приведет к преобразованию строки в строку. Если вы хотите добавить это в качестве ответа, я приму это.

DrRelling 30.04.2024 17:11

Это не так. Как выглядит ваше определение шага?

M.P. Korstanje 30.04.2024 17:40
public void i_get_the_status_code(Integer expectedStatusCode). Если я верну кавычки обратно, он перестанет работать с той же ошибкой, так что проблема действительно в них.
DrRelling 30.04.2024 18:15

Ах. это не имеет ничего общего с кастингом.

M.P. Korstanje 30.04.2024 18:22

Кроме того, зачем использовать класс-оболочку? Это всего лишь код состояния, который вполне можно было бы охватить использованием int, верно?

user22971923 01.05.2024 11:13
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Есть ли опечатка в файле объекта? Кажется, проблема с кавычками.

Then I get the status code "<Status Code">

Кроме того, я надеюсь, что вы используете «Контур сценария» вместо просто «Сценарий». Если мы передаем значения в качестве аргументов, нам следует использовать структуру сценария.

Редактировать1: Спасибо за это, @M.P. Корстанье. Не знал об этой функции.

Еще одна вещь, которая может быть проблемой, заключается в следующем. Несоответствие определения шага. Убедитесь, что подпись метода определения шага точно соответствует шагу в вашем файле объектов. Надеюсь, это исправит ситуацию, поскольку я не могу думать ни о чем другом.

К вашему сведению: Схема сценария и сценарий теперь являются синонимами. Если вы используете последнюю версию Cucumber.

M.P. Korstanje 30.04.2024 15:23

Хороший улов, я не заметил этой опечатки. Я исправил это в вопросе и расширил пример.

DrRelling 30.04.2024 15:24
Ответ принят как подходящий

Удаление кавычек вокруг <StatusCode>, как предложил @M.P.Korstanje, исправило проблему. После этого Cucumber распознал его как целое число и взял определение шага.

Другие вопросы по теме