私はこのような方法を持っています
def className
def method_name
some code
rescue
some code and error message
end
end
それで、レスキューブロックをテストするためにrspecを書き留める方法..?
私はこのような方法を持っています
def className
def method_name
some code
rescue
some code and error message
end
end
それで、レスキューブロックをテストするためにrspecを書き留める方法..?
レスキューしたい場合は、some code
何らかの例外を発生させることを期待していることを意味します。
RSpec スタブを使用して実装を偽造し、エラーを強制することができます。実行ブロックに発生する可能性のあるメソッドが含まれていると仮定します
def method_name
other_method_that_may_raise
rescue => e
"ERROR: #{e.message}"
end
スペック内のそのメソッドにスタブをフックします
it " ... " do
subject.stub(:other_method_that_may_raise) { raise "boom" }
expect { subject.method_name }.to_not raise_error
end
結果をテストすることでレスキューハンドラーを確認することもできます
it " ... " do
subject.stub(:other_method_that_may_raise) { raise "boom" }
expect(subject.method_name).to eq("ERROR: boom")
end
言うまでもなく、一般的なエラーではなく、実際の実装で発生する可能性が高いエラーを発生させる必要があります。
{ raise FooError, "boom" }
Error
これが関連していると仮定して、それのみをレスキューします。
補足として、Ruby では次のようにクラスを定義します。
class ClassName
いいえ
def className
あなたの例のように。