我的 Ruby 程序从 stdin
读取行并使用 puts
打印到 stdout
(终端)。我可以使用 RSpec 来测试读写吗?我可以像在 stdin
中编写的那样向我的程序注入(inject)一个字符串,同时检查输出吗?
line = STDIN.read.chomp.split
另外,我在一个循环中进行读取和写入,直到 line[0]
被“退出”。我可以在循环运行时进行测试,还是应该调用 subject.read_in
和 subject.write_out
?
最佳答案
您可以使用模拟并通过在 and_return()
方法中列出多个值来多次调用该方法。这些将按照给定的顺序返回,每次调用一个。
STDIN.should_receive(:read).and_return("Your string")
STDIN.should_receive(:read).and_return("value1", "value2", "value3")
你可以用 STDOUT 做类似的事情:
STDOUT.should_receive(:puts).with("string")
参见 RSpec mocking documentation获取更多信息。
关于ruby - 我可以使用 RSpec 模拟标准输入/标准输出来测试控制台读写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6335282/