2011-01-07 70 views
0

我是PhpUnit的新手,對編寫測試的最佳實踐有些疑問。使用PhpUnit的最佳做法

我的第一個測試是如下:

<?php 

require_once '../Scrap.php'; 

class ScrapTest extends PHPUnit_Framework_TestCase 
{ 

    protected $scrap; 

    // Setup function to instantiate de object to $this->scrap 
    protected function setUp() 
    { 
     $this->scrap = new Scrap; 
    } 

    /** 
    * @covers Scrap::getPhone 
    * 
    */ 
    public function testGetPhone() { 

     // Variables 
     $array_static1 = Array(0 => 218559372, 1 => 927555929, 2 => 213456789, 3 => 912345678); 
     $phone_list1 = '</div>A Front para<br /><br /><br /><br /><br /><br />-Apoio;<br />-Criação;<br />-Campanhas;<br />-Promoções<br /><br /><br />CONDIÇÕES:<br /><br />Local de Trabalho: Es<br />Folgas: Mistas<br /><br /><br /><br />ordem 500€<br /><br /><br /><br />Mínimos:<br /><br />- Conhecimentos;<br />- Ensino ;<br />-INGLÊS.<br /><br /><br /><br />Candidaturas: <br />[email protected]<br />218559372 | 927 555 929 | <br />RH<br />Rua C. Sal. 40<br />1000-000 Lisboa<br /><br /><br />+351 21 3456789 | (351) 912345678'; 

     $this->assertEquals($array_static1, $this->scrap->getPhone($phone_list1, '351', '9')); 
    } 
} 
?> 

我可以做得比這尤爲明顯?這是做這件事的正確方法嗎?

如果你能給我一些線索,我將不勝感激。

最好的問候,

回答

0

我會使用的PHPUnit的dataProvider功能在這種情況下。這將使您可以擁有簡單,乾淨的測試用例和使用不同測試數據集的附加方法。

實施例:

public function getTextsAndPhones() { 
    return array(
     array(
      '</div>A Front para<br /><br />(...)<br />+351 21 3456789 | (351) 912345678', 
      array(0 => 218559372, 1 => 927555929, 2 => 213456789, 3 => 912345678), 
     ), 
    ); 
} 

/** 
* @dataProvider getTextsAndPhones 
*/ 
public function testGetPhone($text, $phones) { 
    $this->assertEquals($phones, $this->scrap->getPhone($text, '351', '9')); 
} 

當然可以包括 '351' 和 '9' 的數據提供參數爲好。

0

我將使用file_get_contents從文件加載fixture(將注入的HTML)。有一個很長的HTML字符串有點亂。

此外,它具有清晰的變量名稱很方便。在你的情況下,$ array_static1可以重命名爲$ expected_phone_numbers。