raise_error
マッチャー
raise_error
マッチャーを使用して、コードブロックがエラーを発生させることを指定します。最も基本的な形式では、エラーがスローされればパスします。
expect { raise StandardError }.to raise_error
raise_exception
を使用することもできます。
expect { 3 / 0 }.to raise_exception
raise_error
と raise_exception
は機能的に同じですので、任意のコンテキストで最も適切な方を使用してください。
上記の基本形式に加えて、エラー/例外の詳細を指定する方法がいくつかあります。
(((bad1c887d8d625e9)))
任意のエラーを期待する
次の内容で "example_spec" という名前のファイルを作成します。
RSpec.describe "calling a missing method" do
it "raises" do
expect { Object.new.foo }.to raise_error
end
end
rspec example_spec
を実行すると、例がパスするはずです。
特定のエラーを期待する
次の内容で "example_spec" という名前のファイルを作成します。
RSpec.describe "calling a missing method" do
it "raises" do
expect { Object.new.foo }.to raise_error(NameError)
end
end
rspec example_spec
を実行すると、例がパスするはずです。
文字列でメッセージを一致させる
次の内容で "example_spec.rb" という名前のファイルを作成します。
RSpec.describe "matching error message with string" do
it "matches the error message" do
expect { raise StandardError, 'this message exactly'}.
to raise_error('this message exactly')
end
end
rspec example_spec.rb
を実行すると、例がパスするはずです。
正規表現でメッセージを一致させる
次の内容で "example_spec.rb" という名前のファイルを作成します。
RSpec.describe "matching error message with regex" do
it "matches the error message" do
expect { raise StandardError, "my message" }.
to raise_error(/my mess/)
end
end