3

ActionController::ParameterMissing特定のアクションが例外を発生させるかどうかをどのようにテストできますか?

例えば:

it "raises an exception" do
  post :create, {}
  expect(response).to raise ActionController::ParameterMissing
end

上記は機能していないようですActionController::ParameterMissing。例外でテストに失敗します。

4

1 に答える 1

20

raise_errorマッチャーを使用して、expect ブロック構文を使用します。

it "raises an exception" do
  expect{ post(:create, {}) }.to raise_error ActionController::ParameterMissing
end

コードが機能しない理由post(:create, {})は、例外が発生することです。これは、expect(response).to ...コードが実行される前に発生します。#postメッセージはブロック内にないためbegin...end、発生した例外は RSpec に渡され、テストに失敗します。

于 2013-05-23T22:04:27.173 に答える