如何测试某个操作是否会引发ActionController::ParameterMissing
异常?
例如:
it "raises an exception" do
post :create, {}
expect(response).to raise ActionController::ParameterMissing
end
以上似乎不起作用,它将无法通过ActionController::ParameterMissing
例外进行测试。
答案 0 :(得分:15)
使用raise_error
matcher:
it "raises an exception" do
expect{ post(:create, {}) }.to raise_error ActionController::ParameterMissing
end
您的代码不起作用的原因是post(:create, {})
引发了异常。这在expect(response).to ...
代码执行之前发生。由于#post
消息不在begin...end
块中,因此引发的异常会在未通过测试的情况下传递给RSpec。