我是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@ffff.es<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 :(得分: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'参数。
答案 1 :(得分:0)
我会使用file_get_contents从文件加载fixture(将要注入的HTML)。有一个很长的HTML字符串有点乱。
此外,使用清晰的变量名称很方便。在您的情况下,$ array_static1可以重命名为$ expected_phone_numbers。