2017-03-31 14 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をリロードし、タイトルは変更されず、テストは失敗します。このEXACT同じ要求は、開発環境と本番環境のプロジェクトを更新するために働きます。なぜこれが機能していないのかについての手掛かりはありますか?

+1

私は実際にテストで 'reload'を見ません(あなたはそこでテストを行うべきです)。 200は、(a)あなたのテストでは扱っていないユーザー認証ステップがあること、(b)検証問題があることを示唆しています。いずれか/両方をテストするには、アップメートメソッドで 'gem 'pry''と' binding.pry'を使用します。更新が実行されず、更新が実行されていない場合(おそらくユーザー認証の問題)、実行されている場合は、 '@ project.errors.full_messages'を見て問題の内容を確認することができます。 – SteveTurczyn

+0

エラーメッセージを見つけようとすると、私はこの問題を解決できました。先に進んで答えとして投稿し、それをマークします –

+0

嬉しいです。乾杯 – SteveTurczyn

答えて

1

私は実際にテストでリロードを見ることはありません(あなたはそこでテストを行うべきです)。 200は、(a)あなたのテストでは扱っていないユーザー認証ステップがあること、(b)検証問題があることを示唆しています。いずれか/両方をテストするには、gem 'pry'とup.getメソッドを使用してupateメソッドをテストします。更新が実行されない場合、更新は実行されず(おそらくユーザー認証の問題)、実行されている場合は、@ project.errors.full_messagesを参照して問題の内容を確認することができます。

関連する問題