Наблюдение за сообщением об ошибке в rspec, которое не является исключением
Я пишу Ruby API для C API, который инкапсулирует библиотеку C++. C API перехватывает исключения C++, генерируемые библиотекой C++.
В идеале я мог бы пойти и изменить свою библиотеку C, чтобы она вызывала исключения Ruby, но, поскольку я использую FFI, это не совсем вариант.
C API добавляет строку исключения с "Caught exception: ", печатает в STDERR, а затем продолжает, в основном игнорируя ошибку. Я хотел бы наблюдать за этими типами строк в rspec.
Это возможно? Конечно, это было сделано в rspec раньше, но я не совсем уверен, как искать такую функциональность.
1 ответ
Вы можете попробовать заглушить 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