2011-01-26 3 views
3

phpunit 테스트를 처음 접했습니다. 누구든지 이미지 아래의 라인을 테스트하는 방법에 대해 저를 도울 수 있습니까?ZF 폼 유효성 검사 후 PHPunit 테스트가 수행되지 않습니다.

Img example

지금까지 내 테스트는 다음과 같습니다

public function testCanSendEmail() 
{ 
    $formData = array(
     'subject' => 'test subject', 
     'email'  => '[email protected]', 
     'message' => 'test message', 
     'name'  => 'test name'); 

    $this->request 
     ->setMethod('POST') 
     ->setPost($formData); 
    $this->dispatch('/contact'); 
    $this->assertAction('win'); 

나는 검증이 성공하는 경우는 전체 동작을 따라 것이라는 인상을했다? 아무도 여기서 무슨 일이 일어나고 있는지 설명해 주실 수 있을까요? 또한 그러한 행동에 대해 올바른 시험이 무엇인지 설명해주십시오.

+3

$ this-> dispatch ('/ contact'); 다음 var_dump ($ this-> getResponse() -> getBody()); 이것은 html 본문을 반환 할 것이며 어쩌면 유효성 검사 오류 메시지가 표시되는지 확인할 수 있습니다. – Marcin

+1

+1 @Gordon이 흥미로운 링크입니다. 그리고 중재자 선거에서 행운을 빈다. ;-) –

+0

@David 감사합니다, 나는 그것이 내가 과거를 얻지 않을 것이라고 말하는 것이 안전하다고 생각한다 :) – Gordon

답변

1

명백한 설명은 $form->isValidFALSE을 반환한다는 것입니다.

coverage report은 유효한 양식에 대한 if 블록이 실행 된 적이 없음을 보여줍니다. 대신 else 블록이 실행되었습니다. 당신이 알아 내야 할 것은 그 이유와 이유를 제거하는 것입니다. 디버거를 사용하고 실행 흐름을 단계별로 실행하면 런타임에 어떤 일이 발생하는지 확인합니다.

대신 연락 양식을 스텁하여 TRUE을 반환 할 수 있습니다. 양식이 컨트롤러 조치에 하드 코드되어 있기 때문에 수행 방법에 대해서는 http://sebastian-bergmann.de/archives/885-Stubbing-Hard-Coded-Dependencies.html을보십시오.

또 다른 대안 : 실제로 요청하지 않아도이를 테스트 할 수 있도록 연락처 양식을 서비스 계층으로 보내도록 코드를 작성하십시오.