2010-04-28 3 views
4

직장에서 구형 PHP 코드베이스에 단위 테스트를 추가하고 있습니다. 내가 테스트 한 후 HTML 생성 많은 코드를 재 작성하고 생성 된 문자열이 예상되는 문자열과 동일한 경우 현재 난 그냥과 같이, 테스트하고있어됩니다PHP에서 HTML의 강력한 유닛 테스트

public function testConntype_select() { 
    $this->assertEquals(
     '<select><option value="blabla">Some text</option></select>', 
     conntype_select(1); // A value from the test dataset. 
    ); 
} 

이 방법은 단점이있다 (phpunit을 사용) 그 속성 순서, 공백 그리고 많은 다른 관련없는 세부 사항들도 테스트됩니다. 이 작업을 수행하는 더 좋은 방법이 있는지 궁금합니다. 예를 들어 생성 된 DOM 트리를 비교할 수있는 좋은 방법과 쉬운 방법이있는 경우를 예로들 수 있습니다. ruby에 대한 비슷한 질문을 찾았지만 PHP에 대해서는 아무것도 찾을 수 없습니다.

답변

0

동일한 문제를 다루고 있습니다. 웃음! 내가 할 일은 DOMDocument를 사용하는 것이다. 하지만 지금은 제가하고있는 일은 당신이하고있는 커버리지 테스트를 작성하는 것입니다. 여기 내 테스트 중 하나입니다. 너와 동일 :

public function testUpdateSkuTable() { 
    $formName = "sku_id"; 
    $key = $formName; 
    $sku = array('sku_id' => 'sku id', 'description' => 'generic description'); 

    $expected = "<div class='sku_editor_container'><form id='sku_edit_form'><div class='section'><div>SKU Edit Information For: <div id='sku_id' style='color:blue;'>sku_id</div></div></div><div class='blank'></div><div class='section'>SKU Data Entry<table class='sku_table'><tr><td>sku_id:</td><td><input type='text' name='sku_id' id='sku_id' value='sku id' size='50'/></td></tr><tr><td>description:</td><td><input type='text' name='description' id='description' value='generic description' size='50'/></td></tr></table></div><div class='blank'></div><input type='submit' name='sku_submit' value='Save SKU Edit' class='sku_submit'></form></div>"; 
    $actual = $this->view->editorUpdateSku($formName, $sku, $key); 

    $this->assertEquals($expected, $actual); 
} 
1

Zend_Test_PHPUnit을 확인하십시오. 다음을 사용하여 DOM을 쿼리 할 수 ​​있습니다.

assertQuery() 또는 assertXpath();