2010-04-28 26 views
4

我正在爲工作中的舊PHP代碼庫添加單元測試。筆者將要測試,然後重寫了大量的HTML代碼生成,目前我只是測試,如果生成的字符串是相同的期望的字符串,像這樣:(使用PHPUnit的)在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. 
    ); 
} 

這樣有缺點該屬性排序,空白和許多其他不相關的細節也被測試。我想知道是否有更好的方法來做到這一點。例如,如果有任何好的和簡單的方法來比較生成的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); 
} 
相關問題