只是爲了闡明:我是Ruby和Rails的新手。試圖通過測試時得到「預期響應爲<:redirect>,但是爲<200>」
我tryed解決我的問題,在here,here和here的sugestions,但他們似乎並未有直接的關係與我的問題,還是我太愚蠢不明白。
我想測試一個場景,我不更新對象,我希望我的應用程序重定向。我不確定我的控制器代碼是否正確,我想我可能沒有涉及這種情況。這裏是我的測試代碼:
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?
,它真的沒有。我在這裏沒有選擇。如果有人想幫助並需要更多信息,我可以提供。