これは奇妙な質問ですので、必要に応じていくつかの文脈を埋めるためにこれを編集しているでしょう。私は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同じ要求は、開発環境と本番環境のプロジェクトを更新するために働きます。なぜこれが機能していないのかについての手掛かりはありますか?
私は実際にテストで 'reload'を見ません(あなたはそこでテストを行うべきです)。 200は、(a)あなたのテストでは扱っていないユーザー認証ステップがあること、(b)検証問題があることを示唆しています。いずれか/両方をテストするには、アップメートメソッドで 'gem 'pry''と' binding.pry'を使用します。更新が実行されず、更新が実行されていない場合(おそらくユーザー認証の問題)、実行されている場合は、 '@ project.errors.full_messages'を見て問題の内容を確認することができます。 – SteveTurczyn
エラーメッセージを見つけようとすると、私はこの問題を解決できました。先に進んで答えとして投稿し、それをマークします –
嬉しいです。乾杯 – SteveTurczyn