2014-04-25 3 views
0

컨트롤러에 다음 항목을 확인하는 방법이 있습니다. 하지만이 메서드를 실행하기 전에 before_filter 메서드로 작성된 인스턴스 변수를 설정해야합니다. 그러면 rspec에서 어떻게 테스트 할 것인가? 당신이 컨트롤러의 사양을 작성하는 경우필터 전에 인스턴스 변수 값을 확인하십시오. rspec

before_filter method check_items, :only[:next] 
def check_items 
    if params[:item] == "Sherlock" 
     @item = $book1 
    elsif params[:item] == "Harry" 
     @queue = $book2 
    else 
     render :json=>{"Error" => "Book name does not exist"} 
    end 
    end 

======================= 것은

def next 
    @book = @item.pull 
     unless @book.nil? 
     respond_with(@book) 
    else 
     render :json =>{"msg"=>"Nothing to pull"} 
    end 
    end 
+0

당신이 문제를 해결 한 데 도움이

희망? 그렇다면 지식을 우리와 공유 할 수 있습니까? 제안 된 답변을 시도 했습니까? –

답변

0

, 당신은이 동작을 테스트 할 수 있습니다 assigns 제약 조건. 이 같은 끝낼 수는 단위 테스트를 작성하는 경우, 당신은 instance_variable_get 방법을 사용할 수 있습니다

it "assigns @item" do 
    item = Item.create 
    get :next 
    expect(assigns(:item)).to eq(item) 
end 

. 하지만 나는 그것을 피할 것입니다 - 나는 컨트롤러 사양으로 갈 것입니다.