2013-10-02 1 views
0

내 Symfony 컨트롤러에 대한 단위 테스트를 작성하고이 걸림돌을 치려고합니다.symfony에서 phpunit으로 formbuilder를 조롱

내 컨트롤러 메서드가 양식을 반환하므로 해당 형식의 값을 확인하여 예상 한대로 확인하고 싶습니다.

나는 그것을 을 조롱 수있는 경우에도 내가 전달 된 값을 확인 할 수 있습니다 방법을 모르는
  • 내가 제대로 formbuilder을 조롱 할 수있는 방법을 찾을 수 없습니다
    1. ,

      여기 심포니 컨텍스트에서 'form.factory'을 요청하면, 내 $의 formBuilder을받을 수 있도록 내가 (증류)

      $formBuilder = $this->getMock('Symfony\Component\Form\Tests\FormBuilderInterface',Array('add')); 
      
      $formFactory = $this->getMock('Symfony\Component\Form\FormFactoryInterface'); 
      
      $formFactory 
           ->expects($this->any()) 
           ->method('createBuilder') 
           ->will($this->returnValue($formBuilder)); 
      

      및 설정있어거야.

      내 컨트롤러에서 다음

      , 내가 기본 컨트롤러에 CreateFormBuilder 호출이 조롱 폼 빌더 인터페이스를 반환 사실이지만, 추가 방법을 사용할 수없는 것을 확인 한

      $form = $this->createFormBuilder($task) 
           ->add('CountryCode', 'text') 
           ->add('State', 'text') 
           ->add('Locality', 'text') 
           ->add('OrganizationName', 'text') 
           ->add('OrganizationalUnitName', 'text') 
           ->add('CommonName', 'text') 
           ->add('EmailAddress', 'text') 
           ->add('company', 'text') 
           ->add('save', 'submit') 
           ->getForm(); 
      

      간단한 양식, 그리고 모든 단지

      그래서 나는 토론 ABO를 많이 봤어요 ...

      내 formbuilder이 옳은 일을하지 않는 것을 의미한다
      Fatal error: Call to a member function add() on a non-object 
      

      와 불면 유능한 답변이 아니라, '컨트롤러 메소드를 단위 테스트하지 않는 것'이외에는 좋은 답변이 아닙니다. Symfony 문서는 FormBuilder 함수의 단위 테스트에 관한 것입니다 ... http://symfony.com/doc/current/cookbook/form/unit_testing.html

  • 답변

    0

    formBuilder의 'add'메소드를 연결하는 중 오류가 발생합니다. 조롱 한 formBuilder 추가 메소드는 자체적으로 반환해야합니다.

    $formBuilder->expects($this->any()) 
         ->method('add') 
         ->will($this->returnSelf()); 
    
    +0

    그 중 하나입니다. 감사. 컨트롤러가 폼에 설정 한 값을 확인할 수있는 방식으로이 작업을 수행하는 방법에 대한 생각은 무엇입니까? –

    관련 문제