2010-04-28 79 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); 
} 
相关问题