RSpec запрашивает ввод пользователя - PullRequest
0 голосов
/ 26 февраля 2019

У меня два вопроса.Учитывая приведенный ниже код ruby, какие тесты вы будете писать в RSpec, и как вы будете избегать при запуске тестов, чтобы вас спрашивали о вводе пользователем?Я пробовал много способов, таких как:

  1. allow ($ stdout)
  2. allow (Kernel)
  3. заглушка (: получает)
  4. STDOUT*receive (: gets) .and_return ('exit')

Но ничего из вышеперечисленного не сработало.В тесте продолжал спрашивать меня о вводе пользователя.

 class EchoApp
   def greeting
     while(true)
      puts "Say something:"
      user = gets.chomp
      break if user == 'exit'
    end
   return "Goodbye!"
  end
end

1 Ответ

0 голосов
/ 26 февраля 2019

Ваши предложения должны работать на самом деле.Но есть и другой вариант.

orig_stdin = $stdin 
$stdin = StringIO.new('exit') 
assert(EchoApp.new.greeting,'Goodbye!')
# Or 
expect(EchoApp.new.greeting).to eql('Goodbye!')
$stdin = orig_stdin

Дайте мне знать, если это не сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...