gpt4 book ai didi

ruby - 我可以使用 RSpec 模拟标准输入/标准输出来测试控制台读写吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:10 25 4
gpt4 key购买 nike

我的 Ruby 程序从 stdin 读取行并使用 puts 打印到 stdout(终端)。我可以使用 RSpec 来测试读写吗?我可以像在 stdin 中编写的那样向我的程序注入(inject)一个字符串,同时检查输出吗?

line = STDIN.read.chomp.split

另外,我在一个循环中进行读取和写入,直到 line[0] 被“退出”。我可以在循环运行时进行测试,还是应该调用 subject.read_insubject.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com