次のように、have_backtrace/error_with_backtrace という構成可能なマッチャーを作成しました。
RSpec::Matchers.define :have_backtrace do |expected_backtrace|
match do |error|
error.backtrace == expected_backtrace
end
failure_message do |error|
"expected error to have backtrace #{expected_backtrace.inspect}, actually got #{error.backtrace.inspect}"
end
end
RSpec::Matchers.alias_matcher :error_with_backtrace, :have_backtrace
次に、次のように使用できます。
callback = double('reject_callback').as_null_object
# Do some stuff which could call callback.call
expect(callback).to have_received(:call).with(error_with_backtrace(caller))
これはうまくいきますが、エラーメッセージは私が望むものではありません
expected: (error with backtrace "backtrace_line_1", "backtrace_line_2", ... )
got: (#<RuntimeError: RuntimeError>)
「得」の部分も言ってほしい(error with backtrace ...)
これを達成する方法はありますか?