我正在为C API编写一个Ruby API,它封装了一个C ++库。 C API捕获C ++库抛出的C ++异常。
理想情况下,我可以进入并修改我的C库,因此它会引发Ruby异常,但由于我使用的是FFI,所以这不是一个真正的选择。
C API在“Caught exception:”前面加上异常字符串,打印到STDERR,然后继续,基本上忽略了错误。我想在rspec中观察这些类型的字符串。
这可能吗?当然这已经在rspec中完成了,但是我不太确定如何搜索这种功能。
答案 0 :(得分:0)
您可以按here:
中的建议尝试对STDERR
进行存根
before do
@orig_stderr = $stderr
$stderr = StringIO.new
end
it "it writes to err" do
subject.do_that_thing
$stderr.rewind
$stderr.string.chomp.should =~ "Caught exception: "
end
after do
$stderr = @orig_stderr
end