Rails 控制器测试 - 验证错误不会引发 HTTP 错误响应

发布于 2024-08-17 14:42:41 字数 320 浏览 7 评论 0原文

我有一个 ActionController 派生测试,它使用不正确的数据向被测控制器发送“发布”请求。控制器尝试创建一个新对象并保存它。该模型具有在保存时触发的验证方法,并生成验证错误来检测测试发送的不正确数据。

到目前为止,一切都很好。现在,控制器使用assert_response :failure 验证HTTP 响应状态是否为失败。然而,测试在此步骤失败,并显示:

预期响应为 <:failure>,但实际响应为 <200>。

@obj.errors 已正确填充验证错误,但不知何故 HTTP 响应始终为 200。

有任何线索吗?

I have an ActionController derived Test which sends a 'post' request to the controller under test with incorrect data. The controller tries to create a new object and save it. The model has validation methods that get triggered on save and they generate a validation error detecting the incorrect data sent by test.

So far so good. Now, controller verifies that the HTTP response status is failure by using assert_response :failure. However, the test fails at this step saying:

Expected response to be a <:failure>, but was <200>

The @obj.errors is correctly populated with the validation error but somehow the HTTP response is always 200.

Any clues?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拒绝两难 2024-08-24 14:42:41

你的控制器代码有什么作用? Rails 中处理验证错误的常用方法是发送 200 OK 响应(例如使用 render :action => 'new')。响应包含表单(使用提交的参数填充)以及验证错误消息。

What does your controller code do? The usual way to handle validation errors in Rails is to send a 200 OK response (e.g. with render :action => 'new'). The response contains the form (populated with the submitted parameters) along with the validation error messages.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文