Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RSpec:控制器未更新测试环境中的记录_Ruby On Rails_Ruby_Rspec - Fatal编程技术网

Ruby on rails RSpec:控制器未更新测试环境中的记录

Ruby on rails RSpec:控制器未更新测试环境中的记录,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,这是一个奇怪的问题,所以我可能会根据需要编辑它来填充一些上下文。我有一个RSpec测试: 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]

这是一个奇怪的问题,所以我可能会根据需要编辑它来填充一些上下文。我有一个RSpec测试:

    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_项目时,标题保持不变,测试失败。这个完全相同的请求用于在开发和生产环境中更新项目。关于为什么这不起作用,有什么线索吗?

我在测试中没有看到重新加载,你应该在那里做一次。200建议要么存在测试中未处理的用户身份验证步骤,要么存在验证问题。您可以在更新方法中使用gem'pry'和binding.pry测试其中一个/两个。如果pry没有在update中执行,那么update可能没有执行用户身份验证问题,如果它确实执行了,您可以查看@project.errors.full_消息以了解问题所在。

我在测试中没有实际看到重新加载,您应该在那里执行一次。200表示存在用户认证步骤,而您在测试中没有处理该步骤,或者存在验证问题。您可以在upate方法中使用gem'pry'和binding.pry测试其中一个/两个。如果pry未在更新中执行,则更新可能未执行用户身份验证问题,如果它确实执行,您可以查看@project.errors.full_消息以了解问题所在。您关于pry查找错误消息的建议帮助我解决了此问题。继续吧,把它作为一个答案贴出来,我会把它标记为乐意,现在就把答案贴出来。干杯