在rspec中查看错误消息并非异常

时间:2014-03-06 20:04:37

标签: ruby rspec ruby-ffi

我正在为C API编写一个Ruby API,它封装了一个C ++库。 C API捕获C ++库抛出的C ++异常。

理想情况下,我可以进入并修改我的C库,因此它会引发Ruby异常,但由于我使用的是FFI,所以这不是一个真正的选择。

C API在“Caught exception:”前面加上异常字符串,打印到STDERR,然后继续,基本上忽略了错误。我想在rspec中观察这些类型的字符串。

这可能吗?当然这已经在rspec中完成了,但是我不太确定如何搜索这种功能。

1 个答案:

答案 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