gpt4 book ai didi

ruby-on-rails-3 - 期望 Rspec 在 Controller 中引发异常

转载 作者:行者123 更新时间:2023-12-04 04:57:42 25 4
gpt4 key购买 nike

我正在尝试在 Controller 上测试是否在更新批量分配保护属性时引发错误。

expect do 
post :create, account: {protected_attr: "blahblah"}
end.to raise_error

然而 Rspec 说:预期的异常但没有提出任何问题

而如果在规范文件中,我们删除了期望块,比如
post :create, account: {protected_attr: "blahblah"}

运行规范时会出现异常:
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: protected_attr

为什么 rspec 的 raise_error 没有捕获异常?

最佳答案

问题是你试图在你的 post :create, account: {protected_attr: "blahblah"} 上得到一个异常(exception)。但这些代码所做的只是返回一个 http 响应。

您不能使用 expect {}.to raise_exception这里。

要测试异常,您不应该在 Controller 规范中执行此操作(我会在 spec/models/account_spec.rb 上执行此操作。例如:

expect do
described_class.create!(protected_attr: 'blahblah')
end.to raise_exception

在您的 Controller 上,您可以测试响应代码是否成功:
post :create, account: {protected_attr: "blahblah"}

expect(response).to_not be_success
expect(response.status).to be(422) # you can be specific about the code you're expecting

关于ruby-on-rails-3 - 期望 Rspec 在 Controller 中引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16558805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com