如何找出Rails控制器返回500错误代码的原因?

时间:2015-10-20 16:41:34

标签: ruby-on-rails ruby-on-rails-3

在测试中,对session.get root_path的调用返回500错误代码,即assert session.response.success?失败。

过去这很好,很明显我已经破坏了一些东西,但由于以下原因我无法缩小原因:

  • 没有抛出异常。
  • session.response.body的值是正确的(即它包含我在控制器中render template: ...调用所期望的正确呈现的HTML。

换句话说,似乎没有任何实际出错,但仍有500个HTTP响应。

注意:我在控制器操作的前面设置了status = :success(或其他一些值),然后传递给渲染为status: status。这是因为我根据会话中的某些内容检测到可能的未经授权的访问。

1 个答案:

答案 0 :(得分:2)

好吧,我一直没有观察到。测试方法称为#success?,但响应代码符号称为:ok

公平地说,其他Rails测试方法/响应代码符号倾向于直接映射。

<强>澄清:

因此,基于Max的评论,这里的要点是#success?对于任何200个系列的“快乐”HTTP代码都返回true。这是一个总括性术语,因此不能传递给render

我已将相关代码更新为更像:

status = :ok  # This was :success
if redirecting_from_access_denied?
  status = :unauthorized
end