1

데이터베이스에 액세스해야하는 일부보기 도우미 (교차 모듈)가 있습니다. 때문에, 이것은 매우 편리하지만데이터베이스 액세스로보기 도우미를 테스트하는 방법

<div class="notifications"> 
<?php echo $this->notifications()->render(); ?> 
</div> 

, 연막 시험/AbstractHttpControllerTestCase를 사용하여 컨트롤러의 단위 테스트를 할 매우 어려운 것 같다 이에 대한 일반적인 예는 여러 페이지에 걸쳐 사용자 알림을 인쇄하는 NotificationHelper, 수 도우미는 항상 데이터베이스에 액세스하려고합니다 (그는 분명히하지 않아야합니까?). 그래서 이것을 막기 위해서는 NotificationHelper을 조롱해야합니다. 그러나 모의가 $this->notifications() : null으로 돌아갈 것이므로 render()은 실패합니다. , __invoke()

  • 를 분리 RendererListener (이 경우)처럼, NotificationHelper의 반환 값을 정의

    • 모의 NotificationHelper
    • 의 모든 종속성 :

      내가 가지고 올 수있는 유일한 방법

      은,이다 그러나 이것은보기가 어떤 식 으로든 테스트되지 않을 수도 있습니다. (예를 들어, 모두 <? echo $this->url('route'); ?>이 여전히 작동하는 경우 유용 할 수도 있습니다.)

    첫 번째 두 가지 방법은 모든 ControllerTest의 모든 도우미와 함께이 작업을 수행해야하기 때문에 매우 부풀어 오르고 잘못된 것처럼 보입니다.

    보기 템플릿이 더 이상 테스트되지 않으므로 세 번째 방법은 약간의 편의를 제공합니다.

    더 좋은 방법이 있나요? 아니면 모든 과정이 잘못 되었습니까? 아니면 완전히 잘못된 생각을 얻었습니까?

  • 답변

    0

    AbstractHttpControllerTestCase은 기능 테스트에 사용할 수 있지만 실제 단위 테스트에는 도움이되지 않습니다.