【问题标题】:Rails controller testing - Validation errors do not raise a HTTP error responseRails 控制器测试 - 验证错误不会引发 HTTP 错误响应
【发布时间】:2010-01-15 13:23:02
【问题描述】:

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

到目前为止一切顺利。现在,控制器通过使用 assert_response :failure 来验证 HTTP 响应状态是否为失败。但是,在这一步测试失败了:

预期响应为 <:failure>,但结果为

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

有什么线索吗?

【问题讨论】:

    标签: ruby-on-rails unit-testing http actioncontroller


    【解决方案1】:

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

    【讨论】:

    • 是的,这确实是设计使然。控制器没有做任何花哨的事情,HTTP 响应应该是 200,因为请求本身是正确的,尽管数据无效。感谢您确认。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2018-09-22
    相关资源
    最近更新 更多