在测试中,对session.get root_path
的调用返回500错误代码,即assert session.response.success?
失败。
过去这很好,很明显我已经破坏了一些东西,但由于以下原因我无法缩小原因:
session.response.body
的值是正确的(即它包含我在控制器中render template: ...
调用所期望的正确呈现的HTML。换句话说,似乎没有任何实际出错,但仍有500个HTTP响应。
注意:我在控制器操作的前面设置了status = :success
(或其他一些值),然后传递给渲染为status: status
。这是因为我根据会话中的某些内容检测到可能的未经授权的访问。
答案 0 :(得分:2)
好吧,我一直没有观察到。测试方法称为#success?
,但响应代码符号称为:ok
。
公平地说,其他Rails测试方法/响应代码符号倾向于直接映射。
<强>澄清:强>
因此,基于Max的评论,这里的要点是#success?
对于任何200个系列的“快乐”HTTP代码都返回true。这是一个总括性术语,因此不能传递给render
。
我已将相关代码更新为更像:
status = :ok # This was :success
if redirecting_from_access_denied?
status = :unauthorized
end