Как я могу протестировать пользовательский ввод и вывод Cucumber с помощью Highline?

#ruby #testing #cucumber #highline

#ruby #тестирование #cucumber #highline

Вопрос:

Я пробую несколько способов, таких как отключение стандартного вывода, использование highline-test и aruba gems, но это по-прежнему останавливает мои тесты cucumber и запрашивает пользовательский ввод. Существуют ли рекомендации по тестированию таких приложений с помощью Cucumber?

Ответ №1:

Aruba предлагает мне решение. Прежде всего, моей ошибкой было создание нового экземпляра корневого класса приложения без проверки if __FILE__ == $0 .

И, наконец, это выглядит так:

dashboard.feature:

 Feature: Manage app with dashboard
As an app user
In order to control application
I want to have a dashboard

Scenario: View dashboard
  When I run `../../lib/reporter.rb` interactively
  Then I should see following choices
    | 1 | Choice 1 |
    | 2 | Choice 2 |
    | 3 | Choice 3 |
  

steps.rb:

 Then(/^I should see following choices$/) do |table|
  menu = ''
  table.rows_hash.each do |key, value|
    menu << "#{key}. #{value}n"
  end
  Timeout::timeout(exit_timeout) do
    loop do
      break if assert_partial_output_interactive(menu)
      sleep 0.1
    end
  end
end