2010-04-28 7 views
4

J'ajoute des tests unitaires à une ancienne base de code PHP au travail. Je vais tester puis réécrire beaucoup de code de génération HTML et actuellement je teste simplement si les chaînes générées sont identiques à la chaîne attendue, comme suit: (avec PHPUnit)Tests unitaires robustes de HTML en PHP

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

De cette façon a la baisse Cet ordre d'attribution, les espaces et beaucoup d'autres détails non pertinents sont également testés. Je me demande s'il y a de meilleurs moyens de le faire. Par exemple, s'il existe des moyens simples et efficaces de comparer les arbres DOM générés. J'ai trouvé des questions très similaires pour ruby, mais je n'ai rien trouvé pour PHP.

Répondre

0

Je fais face aux mêmes problèmes. LOL! Ce que je pense que je vais faire est d'utiliser le DOMDocument à un moment donné. Mais pour l'instant tout ce que je fais est d'écrire des tests de couverture, ce que vous faites. Voici un de mes tests. Identique à la vôtre:

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); 
}