我可以使用 RSpec 模拟 stdin/stdout 来测试控制台读取和读取吗?写道?
我的 Ruby 程序从 stdin
读取行并使用 puts
打印到 stdout
(终端)。我可以使用RSpec来测试读写吗?我可以像在 stdin
中编写的那样将字符串注入到我的程序中,同时检查输出吗?
line = STDIN.read.chomp.split
另外,我在循环中进行读取和写入,直到“line[0]”“退出”。我可以在循环运行时进行测试还是应该调用 subject.read_in
和 subject.write_out
?
My Ruby program reads lines from stdin
and uses puts
to print to stdout
(the terminal). Can I use RSpec to test the reads and writes? Can I inject a string to my program like it was written in stdin
and at the same time check the output?
line = STDIN.read.chomp.split
Also, I have the reads and writes in a loop, until line[0]
is "quit". Can I test while the loop is running or should I call subject.read_in
and subject.write_out
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用模拟并通过在
and_return()
方法中列出多个值来多次调用该方法。这些将按照给定的顺序返回,每次调用时返回一个。您可以使用 STDOUT 执行类似的操作:
有关详细信息,请参阅 RSpec 模拟文档。
You can use mocks and have the method called more than once by listing multiple values in the
and_return()
method. These will be returned, one on each call, in the order given.You can do similar things with STDOUT:
See the RSpec mocking documentation for more information.
RSpec 3.0+
使用 RSpec 3.0,有
RSpec 3.0+
With RSpec 3.0, there is output matcher for this purpose: