2011-02-08 5 views
1

100 % 코드 커버리지를 얻으려고하지만 아래의 57 행을 어떻게 처리 할 지 결정할 수 없습니다. 그것은 단순히 결말이다}. 나는이 코드를 내 코드 전체에 걸쳐, else {와 같은 라인을 통해 가지고있다. 그러나 그것들은 다루지 않으며, 죽은 코드로 표시되지도 않는다.제공된 균열을 통과하는 코드 행을 덮기위한 테스트를 작성하는 방법

이 줄을 어떻게 커버 할 수 있습니까?

코드의 첫 번째 엿볼에서
34     :  public function addAction() {                
    35     :                         
    36    2 :   $form = new Roles_Form_Add();               
    37     :                         
    38    2 :   if ($this->getRequest()->isPost()) {             
    39     :                         
    40    1 :    if ($form->isValid($this->getRequest()->getPost())) {        
    41     :                         
    42    1 :     $clean = $form->getValues();             
    43     :                         
    44    1 :     $roleService = new Roles_Service_Role();          
    45     :                         
    46    1 :     $role = $roleService->fetchNew();            
    47    1 :     $role->setFromArray($clean)              
    48    1 :      ->save();                 
    49     :                         
    50    1 :     $this->_helper->flashMessenger('A new role has been added.');     
    51     :                         
    52    1 :     $this->_helper->redirector('view','role','roles',array('id'=>$role->id));  
    53    1 :     return;                   
    54     :                         
    55     :    }                     
    56     :                         
    57    0 :   }                      
    58     :                         
    59    1 :   $form->setAction($this->_helper->url('add','role','roles'));       
    60     :                         
    61    1 :   $this->view->addRoleForm = $form;              
    62     :                         
    63    1 :  }                       
    64     :    


public function testAddAction() { 

    $this->dispatch('/roles/role/add'); 

    $this->assertModule('roles'); 
    $this->assertController('role'); 
    $this->assertAction('add'); 

    $this->assertQuery('form#addRole input#name'); 

} 

public function testAddActionWithPost() { 

    $this->getRequest()->setMethod('POST') 
     ->setPost('name','Test'); 

    $this->dispatch('/roles/role/add'); 

    $this->assertRedirectTo('/roles/role/view/id/1'); 

} 
+0

아마도 코드 커버리지 도구는 긍정적 인 조건을 테스트했지만 음수가 아닌 코드를 제안한 것 같습니다 (38 번 줄이 실행되지 않으면 블록이 실행될 때)? isPost()가 false를 리턴하는 테스트를 작성하십시오. –

+0

게시물이없는 테스트가 있으며 사용 된 테스트를 추가했습니다. 다른 조언? – Sosy

답변

4

, 난 항상 당신의 검사 결과에 true로 평가하기 때문에 기능 addAction 항상 줄에 return; 문으로 남아있는 그 선 40 (if ($form->isValid($this->getRequest()->getPost())) {)을 말하고 싶지만 53

+0

나는 사용하고있는 테스트를 추가했다. 나는 GET 요청을 보내는 테스트를하고 있는데, 59 행 이상이 포함되어 있고, 57 행을 포함해야한다고 가정하고 있지만 잘못된 것일 수 있습니다. 이 테스트가 그 라인을 덮어야합니까? 아니면 다른 것을 써야합니까? – Sosy

+0

죄송합니다. 답을 읽지 못했습니다. 고맙습니다. 이게 효과가있어, 내 양식을 거짓 데이터로 테스트했지만 컨트롤러는 테스트하지 못했습니다. – Sosy

+0

나는 내 평판이 높을 때까지 그럴 수 없다. – Sosy

관련 문제