我试图测试使用GLI的我的宝石的输出但是我遇到了问题。在我的测试设置中,我将$stdout
和$stderr
重定向到StringIO
个实例但是当我运行我的代码时,我仍然会在屏幕上显示一条消息,而不是重定向到我的自定义对象。
begin
old_stdout, old_stderr, $stdout, $stderr = $stdout, $stderr, StringIO.new, StringIO.new
@exit_code = described_class.run([command] + command_args)
@stdout = $stdout.string
@stderr = $stderr.string
ensure
$stdout = old_stdout
$stderror = old_stderr
end
我希望最终调用GLI described_class.run([command] + command_args)
方法的exit_now!
会被重定向到$stderr
但是情况似乎并非如此。
有没有办法去追踪"字符串在哪里/如何打印到屏幕上?
答案 0 :(得分:0)
您似乎正在使用基于described_class
的RSpec。如果您只是尝试测试stdout
/ stderr
,那么就有了匹配。
it "does something" do
expect {
described_class.run([command] + command_args)
}.to output(/some string match/).to_stdout
end
GLI项目的所有者就如何测试GLI设置提出了一些建议here,也许这也有帮助。