Ruby RSpec请求用户输入

Ruby RSpec请求用户输入,ruby,rspec,user-input,Ruby,Rspec,User Input,我有两个问题。给定下面的ruby代码,您将在RSpec中编写什么样的测试,以及在运行测试时如何避免被询问用户输入?我尝试了很多方法,例如: 允许$stdout allowKernel 存根:得到 标准输出应接收:puts.withexit 允许$stdin.to receive:get.并返回'no\u get' 允许kernel.to的任何实例接收:get.and返回'exit' 但上述措施都没有奏效。在测试中,我不断询问用户输入 class EchoApp def greeting

我有两个问题。给定下面的ruby代码,您将在RSpec中编写什么样的测试,以及在运行测试时如何避免被询问用户输入?我尝试了很多方法,例如:

允许$stdout allowKernel 存根:得到 标准输出应接收:puts.withexit 允许$stdin.to receive:get.并返回'no\u get' 允许kernel.to的任何实例接收:get.and返回'exit' 但上述措施都没有奏效。在测试中,我不断询问用户输入

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

你的建议实际上应该行得通。但还有另一种选择

原始标准=$stdin $stdin=StringIO.new'exit' assertEchoApp.new.问候,“再见!” 或 expectEchoApp.new.greeting.to eql‘再见!’ $stdin=原标准 如果这不起作用,请告诉我