2013-11-02 2 views
0

명확히하기 위해 : 저는 Ruby와 Rails를 처음 사용합니다.테스트를 통과 할 때 "<:redirect>이 될 것으로 예상되는 응답은 <200>"입니다.

나는 here, herehere의 sugestions 내 문제를 해결하기 위해 tryed했지만, 그들은 내 문제와 직접적인 관계를 갖고있는 것 같다하지 않았거나 이해가 않습니다 너무 바보입니다.

개체를 업데이트하지 않고 응용 프로그램을 리디렉션하도록 시나리오를 테스트하려고합니다. 내 컨트롤러 코드가 맞는지 잘 모르겠다. 아마이 시나리오를 다루지 않을 것 같다. 이미 @status.changed? 있는지 확인하려고했습니다, 그것은 정말하지 않았다

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 

: 여기 내 테스트 코드입니다 :

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 

, 내 컨트롤러 업데이트 코드입니다. 나는 옵션이 없다. 누구든지 더 많은 정보를 원하고 도움이 필요하면 제공 할 수 있습니다. 나를 위해

답변

0

마른 세수를 ... 나는 내 질문에서 언급 한

:

는 이미 @status.changed? 있는지 확인하려고했습니다, 그것은 정말하지 않았다. 내가 모델 속성 중 하나에 다른 무언가를 넣을 때

그것은 변화를했지만 난 단지 내 @status 모델을 저장 한 후 .changed?을 요청했습니다. 정말 미안 해요. 아직 루비 온 레이 (Ruby on Rais)가 어떻게 작동하는지 알아 내려고 해요.

그런데 저는 params[:status] 해시 값을 사용하여 내 모델의 유일한 속성 (물론 id 제외)을 설정하는 문제에 대한 해결책을 생각해 냈습니다. 그리고 전에을 저장하고 있으니, @status.changed?이라고 부탁드립니다. 그렇지 않으면 redirect_to 변하지 않은 @status, 그렇지 않으면, 그냥 저장하고 이전 코드를 통해 이동하십시오.

@document 모델이 변경되었는지 확인해야하므로 물론 모든 시나리오를 다루지는 않지만이 질문의 범위는 아닙니다.

관련 문제