Rails测试 - 期望的响应是<重定向>,但是<200>。

时间:2015-12-26 11:49:12

标签: ruby-on-rails http testing

我正在尝试更好地了解服务器日志以增强我的测试环境。对于我发送到服务器的大多数查询,我(几乎)总是得到如下的200条消息:

Completed 200 OK in 410ms (Views: 403.0ms | ActiveRecord: 1.7ms)

当使用assert_redirected_to方法时,这(似乎)触发了我的测试中的以下失败:

Expected response to be a <redirect>, but was <200>

例如,如果我在控制器中按如下方式更新我的模型“用户”

def update
  @user = User.find(params[:id])
  if @user.update_attributes(user_params)
  flash[:success] = "Your profil has been updated"
  redirect_to @user
  end
end

我想测试重定向。我用:

test "friendly forwarding" do
   get edit_user_path(@user) #user is a very basic fixture that I call in the test
   log_in_as(@user)
   assert_redirected_to edit_user_path(@user)
   patch user_path(@user), user: { name:  "Foo Bar", email: "foo@bar.com }
   assert_redirected_to @user #line that makes the test fails
end

有什么问题?我应该使用与assert_redirected_to方法不同的东西,还是我的代码有问题,不应该发回200条消息?

1 个答案:

答案 0 :(得分:0)

Pragma: no-cache
Cache-Control: no-cache

当更新失败时,您正在呈现部分,因此响应为200.通常,更新方法将显示验证错误并在此时呈现编辑表单。请参阅此处:rails教程中的Successful and unsuccessful updates