Наблюдение за сообщением об ошибке в 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
Другие вопросы по тегам