如何测试某个动作是否引发ActionController::ParameterMissing
异常?
例如:
it "raises an exception" do
post :create, {}
expect(response).to raise ActionController::ParameterMissing
end
上面的方法似乎不起作用,它将通过
ActionController::ParameterMissing
异常使测试失败。 最佳答案
使用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。