RSpec - 测试强参数ActionController :: ParameterMissing

Art*_*huk 1 rspec ruby-on-rails strong-parameters

如何测试某个动作是否会引发ActionController::ParameterMissing异常?

例如:

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

以上似乎不起作用,它将失败测试与ActionController::ParameterMissing异常.

Aar*_*n K 15

使用raise_error匹配器使用expect块语法:

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

您的代码不起作用的原因是post(:create, {})引发异常.这在expect(response).to ...代码执行之前发生.由于#post消息不在begin...end块中,因此引发的异常将传递给RSpec,导致测试失败.