2014-03-06 23 views
0

我正在为封装C++库的C API编写一个Ruby API。 C API捕获C++库抛出的C++异常。注意在rspec中的错误消息,这不是一个例外

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

C API将带有“捕获异常:”的异常字符串前置,打印到STDERR,然后继续,基本上忽略该错误。我想在rspec中观察这些类型的字符串。

这可能吗?这确实是在rspec之前完成的,但我不太清楚如何搜索这种功能。

回答

0

您可以尝试捻熄STDERRhere建议:

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 
+0

这似乎并没有对我的工作。难道是因为警告来自C国而不是Ruby? –

+0

是的,它可能是...... :-( –

相关问题