【问题标题】:RSpec - Testing Strong Parameters ActionController::ParameterMissingRSpec - 测试强参数 ActionController::ParameterMissing
【发布时间】:2013-05-23 21:54:16
【问题描述】:

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

例如:

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

上述方法似乎不起作用,它将导致测试失败并出现ActionController::ParameterMissing 异常。

【问题讨论】:

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


    【解决方案1】:

    使用 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。

    【讨论】:

    • 太棒了!您能解释一下为什么它适用于期望块而不适用于问题中的代码吗?
    • 异常是作为调用post的一部分引发的,而不是作为调用response的一部分
    • 这里要注意的关键是except 的括号已从( ) 更改为{ }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多