2017-03-31 117 views
0

没有更新记录这是一种奇怪的问题,所以我可能会修改这是需要一些背景来填补的。我有一个RSpec测试:RSpec的:控制器测试ENV

it "should update object paramaters" do 
     put :update, params: {id: test_project, project: valid_params} 
     test_project.reload 
     expect(test_project.title).to eql valid_params[:title] 
     expect(test_project.created_at).to_not eql test_project.updated_at 
    end 

相关负责人采取行动:

# @project is defined in a before_action 
    def update 
    if @project.update_attributes(project_params) 
     redirect_to @project, flash: { success: "Project successfully updated!" } 
    else 
     render :edit 
    end 
    end 

此请求然而,当返回200 OK(我希望重定向代码,但事实并非如此)响应代码,我重新加载test_project标题保持不变,测试失败。这个完全相同的请求用于在开发和生产环境中更新项目。任何线索为什么这不起作用?

+1

我实际上在测试中看不到'reload'(你应该在那里做一个)。 200会建议(a)有一个用户认证步骤,您没有在您的测试中处理或者(b)存在验证问题。你可以在你的upate方法中使用'gem'pry''和'binding.pry'进行测试。如果pry没有在更新中执行,那么更新没有执行(可能是用户认证问题),如果它执行了,你可以看看@ project.errors.full_messages来查看问题是什么。 – SteveTurczyn

+0

您的寻找错误消息的建议帮助我解决了这个问题。继续并将其作为回答发布,我会将其标记为 –

+0

很高兴,现在回复已发布。干杯 – SteveTurczyn

回答

1

我实际上在测试中看不到重新加载(你应该在那里做一个)。 200会建议(a)有一个用户认证步骤,您没有在您的测试中处理或者(b)存在验证问题。你可以在你的upate方法中使用gem'pry'和binding.pry进行测试。如果pry没有在更新中执行,那么更新没有执行(可能是用户身份验证问题),如果它执行,您可以查看@project.errors.full_messages来查看问题是什么。