明確にするために、私はRubyとRailsが初めてです。
here、here、hereの提案を使用して問題を解決しようとしましたが、それらは私の問題と直接関係がないようでした。または、私は愚かすぎて理解できません。
オブジェクトを更新せず、アプリをリダイレクトするシナリオをテストしようとしています。コントローラーのコードが正しいかどうかはわかりません。おそらく、このシナリオをカバーしていないと思います。ここに私のテストコードがあります:
test "should not update status if nothing has changed" do
sign_in users(:rodrigo)
put :update, id: @status
assert_redirected_to status_path(assigns(:status))
assert_equal assigns(:status).user_id, users(:rodrigo).id
end
、および私のコントローラー更新コード:
def update
@status = current_user.statuses.find(params[:id])
@document = @status.document
if params[:status] && params[:status].has_key?(:user_id)
params[:status].delete(:user_id)
end
respond_to do |format|
if @status.update_attributes(params[:status]) &&
@document && @document.update_attributes(params[:status][:document_attributes])
format.html { redirect_to @status, notice: 'Status was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @status.errors, status: :unprocessable_entity }
end
end
end
かどうかを既に確認しようとしましたが@status.changed?
、実際にはそうではありませんでした。ここには選択肢がありません。誰かが助けたいと思っていて、さらに情報が必要な場合は、私が提供できます。