RSpec - 测试强参数ActionController :: ParameterMissing

时间:2013-05-23 21:54:16

标签: ruby-on-rails rspec strong-parameters

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

例如:

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

以上似乎不起作用,它将无法通过ActionController::ParameterMissing例外进行测试。

1 个答案:

答案 0 :(得分:15)

使用raise_error matcher:

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

您的代码不起作用的原因是post(:create, {})引发了异常。这在expect(response).to ...代码执行之前发生。由于#post消息不在begin...end块中,因此引发的异常会在未通过测​​试的情况下传递给RSpec。