2009-11-04 6 views
1

RSpec 및 Mocha로 컨트롤러 테스트를하고 있습니다. 여기에 내가이 예 포스트 방법 (및 기타 REST 동사)에 대한 설명서입니다변수 통과 레일 테스트 컨트롤러

  1. 에 관한 몇 가지 질문이 예

    describe MenuItemsController, "creating a new menu item" do 
        integrate_views 
        fixtures :menu_items 
    
        it "should redirect to index with a notice on successful save" do 
        MenuItem.any_instance.stubs(:valid?).returns(true) 
        post 'create' 
        assigns[:menu_item].should_not be_new_record 
        flash[:notice].should_not be_nil 
        response.should redirect_to(menu_items_path) 
        end 
    end 
    

    입니까?

    어떻게 객체가

    MenuItem.any_instance.stubs 만든 않습니다

  2. (? : 유효). 반환 (사실은)

    는 컨트롤러 액션에 전달받을?

  3. 질문 2는 post 메서드를 통해 매개 변수를 컨트롤러에 직접 전달하는 것과 어떻게 다릅니 까?

+0

위대한 답변입니다. 고맙습니다!! – stellard

답변

0

1.

들어 Post

들어 Get

들어 Put

Delete

2.

01,235,164 들어

정말 전달되지 않았습니다. 에 대한 호출이 유효한 경우 이되도록 테스트 케이스를 구성하고 있습니까?은 MenuItem 인스턴스에 의해 만들어집니다. 그러면 스텁이 사용되고 의 결과가 유효합니까? 수표가 적용됩니다. 에 의해 무엇이 반환 될지를 결정하고 있습니까? 전화

3.

때 스텁, 언제, 대신 특정 유효 정상적으로, 을 코드 를 실행하는 테스트 실행? MenuItem 인스턴스에; 귀하의 코드는 귀하의 menuItem이 유효한지 여부를 결정하려고 시도하지 않습니다. 스텁에서 지정한 값을 반환합니다. 따라서 여기

사실 귀하의 경우에 당신은 당신의 MenuItem 인스턴스가 올바른 매개 변수 주어진 사실 반환 테스트되지 않습니다하지만 당신은 당신의 MenuItem 인스턴스가 true를 반환 할 때 무슨 일이 일어나고 있는지 테스트하고 있습니다.

MenuInstance 항목에 항상 valid? == true이되는 매개 변수가있는 게시물을 쉽게 설정할 수 있다면 정말 유용하지 않을 수도 있습니다.

예를 들어 WebService에 연결하는 코드가있는 경우 Connection Unavailable을 반환하는 스텁을 사용하여 Webservice가 중단되었을 때 코드에서 어떤 일이 발생하는지 테스트 할 수 있습니다.

+2

설명서 링크가 더 이상 유효하지 않습니다. – aardvarkk

0
  1. 당신은 목적은 컨트롤러에 전달되지 않는 Rails docs

  2. 에서 테스트 REST 방법에 대한 설명서를 찾을 수 있습니다, 그것은 컨트롤러에 의해 생성된다. MenuItem.any_instance.stubs(:valid?).return(true)MenuItem의 인스턴스가 사양 컨텍스트에서 생성되어 valid? 메서드의 경우 true을 반환합니다.

  3. 메소드를 스텁 아웃하는 주된 목적은 테스트중인 것을 분리하는 것입니다. 컨트롤러를 테스트하는 데 필요한 메서드 만 스텁하는 대신 컨트롤러에 매개 변수를 전달하면 컨트롤러 모델을 테스트 할 수 있습니다. 아마도 다른 곳에서 모델을 spec'd했기 때문에 복사는 스펙을보다 복잡하고 취약하게 만드는 역할을합니다. true를 반환하는 valid? 방법을 스텁

    자체 모델 반환 true을하는 데 필요한 모든 PARAMS 전달에 비해 낮은 유지 보수 옵션입니다.

+0

설명서 링크가 더 이상 유효하지 않습니다. – aardvarkk