2017-03-31 153 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來查看問題是什麼。