无法编写Rails控制器测试 - 让它调用def更新方法

时间:2014-05-02 23:57:41

标签: ruby-on-rails ruby-on-rails-4

为什么这个测试失败了?我怎样才能成功测试

编辑配置文件后,控制器中会调用一个方法

控制器

def update
   call_the_method - method works on my machine
end

测试

  test "edit should change approval status" do
    login_as(@denied_profile)
    patch :update, id: @denied_profile, profile: {ALOT OF DUMMY INFORMATION }
    assert @denied_profile.approval_status == Profile::ApprovalStatus::DENIED_EDITED
  end

在补丁请求之后不调用该方法。编写htis测试的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

假设您在approval_status操作中将update字段保存在数据库中,那么您只需要执行patch请求, reload @denied_profile,以便它可以从数据库中获取更新的记录。

test "edit should change approval status" do
  login_as(@denied_profile)
  patch :update, id: @denied_profile, profile: {ALOT OF DUMMY INFORMATION }
  assert @denied_profile.reload.approval_status == Profile::ApprovalStatus::DENIED_EDITED
end

使用@denied_profile.reload.approval_status代替@denied_profile.approval_status