RSPEC询问用户输入



我有两个问题。鉴于下面的Ruby代码,您的测试将在RSPEC中进行哪种测试?在运行测试时如何避免询问用户输入?我尝试了许多方法,例如:

  1. 允许($ stdout)
  2. 允许(内核)
  3. stub(:get)
  4. stdout.should_receive(:puts).with(" exit")
  5. 允许($ stdin)。接收(:get).and_return('no_gets')
  6. 允许_ANY_INSTANCE_OF(kernel)。

,但上述不行。在测试中一直要求我输入。

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

您的建议实际上应该有效。但是还有另一个选择。

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

让我知道这是否不起作用。

相关内容

  • 没有找到相关文章

最新更新