문제

나는 새로운 Zend Framework 및 이 라이브러리.나는 변화는 기존 응용 프로그램을 MVC 건축 및 이를 쓰려고 하고 단위 테스트를 확인할 수 있습니다나는 다소 익숙한 단위 테스트는 개념만으로 붙어 스텁고 조롱에서 일반적입니다.예를 들어 다음

컨트롤러에서 작업하고 테스트를 통과에 회원 ID 입니다.나는 그때 초기 구성원이 사용하는 객체 ID 입니다.그런 다음 전화 번호의 방법과 관련된 구성원 개체 및 할당 값을 반환하기체입니다.

class A extends Zend_Controller_Action {
    public function viewAction() {
        $member = new Member($this->getRequest()-> getParam('id'));

        //perform various calls on the member object 

        $gender = $member->getGender();
        ...

        //assign the return values to the view object

        $this->view->assign('gender',$gender);   
        ...

     }
}

나는 어떻게 조롱$구성원 변수 내에서 테스트할 수 있도록 사용자 지정 방법들을 통해 반환 값?

면 내 이해 여기에 잘못된 것을 몇 가지 안내합니다.

감사합니다!

도움이 되었습니까?

해결책

나가 당신을 정확하게 이해하는 경우,당신은 테스트를 작성을 위해 이동합니다.이 경우에는 것은 불가능하 모$member since 새 인스턴스를 만들어 내 방법입니다.그 이유는 우리 모두가 노력하는 부유물의 많은으로 우리의 new 문으로 지금까지 개체 그래프에서 가능한(DI).

일반적으로가는 특별한 이 라이브러리 사례 Zend_Test_PHPUnit 을 테스트하는 컨트롤러입니다.

하지만,사실의 문제로,매우 어렵거나 불가능 테스트 ZF 컨트롤러가 올바르게(의미를 가진 가득 차있는 고립).는 게 좋을 것 같다면을 테스트하는의 나머지 부분의 응용 프로그램,일반 라이브러리,등등.

다시 말해서,에 ZF1 로직 컨트롤러가 중앙선소(한 후에 부트스트랩),이 많은 곳의 new 문은 전통적으로 사용됩니다.분명히 그드 테스트가 용이하기 때문에 모든 인스턴스를 만들어지는 대신,주사되는 unmockable.

로@vascowhite 지적,그것도 일반적으로 좋을 위해 노력하고 lean 컨트롤러입니다.즉,이동으로 많은 논리로 가능한 모델층이다.이 이어질 것입니다 적은 완벽(건조)더 나은 테스트 기능은 같은 시간에.

하지만 주의를 지불하지 않을 부풀린 모델다.한 지점에서 당신은 아마 원하는 요소 중 일부에서 코드로 추가 구성 요소입니다.

추가적인 문제할 수 없는 모의 앞 컨트롤러 중 하나이기 때문에 단일.그래서 당신은 정말이 없어 많은 옵션을 테스트하는 같은 작업입니다.옵션만을 것을 주입하는 회원 또는 인스턴스에서 그것을 얻을 레지스트리(좋은 생각이 아니거나).

주어진,그래서 모든 것 그것은 도달할 수 없 전체 격리에 대한 테스트합니다.지

ZF2 훨씬 쉽게 될 것입 테스트,하지만.

다른 팁

기능 테스트가있는 컨트롤러를 덮는 것으로 시작하는 것이 좋습니다.이 경우이 조롱 문제를 우회하고 테스트를 더 잘 적용 할 수 있습니다.컨트롤러는 항상 단위 테스트로 다루기가 어렵습니다. 왜냐하면 그들은 강하게 결합되어 있기 때문입니다.

zf를 사용하여 기능 테스트를 작성하는 것은 "Nofollow"> http ://codeception.com/01-27-2012/bdd-with-zend-framework.html

또한 몇 가지 예가 있으며 컨트롤러에 대한 단위 테스트를 수행 할 수있는 방법이 있습니다.그러나 성실하게, 기능 테스트가 이루어진 후 단위 테스트 컨트롤러를 권장합니다.

http://codeception.com/docs/06-unittestsandbdd#testingController <./ P>

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top