Ответ 1
Огурчик переопределяет сообщение puts
в классе RbWorld
, чтобы все, написанное с помощью puts
, правильно транслировалось во всех форматировщиках. В случае форматера pretty
они переходят в коллекцию delayed_messages
, пока не назовет print_messages
, который, по-видимому, будет выполняться после того, как будет напечатано каждое имя шага, предположительно, чтобы сообщения оказались вложенными под шаг в котором они были сгенерированы.
По какой-то причине окончательный вызов print_messages
в симпатичном форматировании, я не уверен, что это упущение или преднамеренное, поскольку оно выглядело бы менее "красивым", чтобы иметь ложные сообщения на выходе.
Интересно, что если вы добавите второй сценарий, вы увидите, что "после сценария" будет напечатан как первое сообщение при запуске второго сценария, что коллекция delayed_messages
в действии.
Итак, вы ничего не делаете неправильно, просто как Cucumber увлекает метод puts
. Если вы не слишком обеспокоены тем, что эти сообщения хорошо отформатированы, вы можете просто заменить puts
на STDOUT.puts
, чтобы обойти форматирование огурца.