我正在使用Yii 1.1.7。我刚刚介绍了Yii中的单元测试,我已经安装并配置了PHPUnit。我可以成功运行一些基本测试。我想知道如何(如果可能的话),我可以使用数据提供程序来执行我的测试。
以下是我的示例测试类:
<?php
require_once('bootstrap.php');
class SampleControllerTest extends CTestCase{
/*
* @dataProvider provider
*/
public function testSampleMethod($param1,$param2,$param3,$param4)
{
$this->assertGreaterThan(0,$ApplicationID);
}
public function provider()
{
return array(
array("1875","1","1","False"),
array("1874","1","1","False"),
array("1415","1","1","False"),
array("1414","1","1","False"),
array("1413","1","1","False"),
);
}
}
?>
当我在PHPUnit上运行测试时,出现以下错误:
缺少SampleController的参数1 :: testSampleMethod()
我理解功能测试对于控制器更好,对模型进行单元测试。我只是想让数据提供程序运行。
先谢谢。
答案 0 :(得分:1)
testSampleMethod因为你的方法名称以单词test开头,然后它在运行测试时由Yii运行。但它不能有参数,因为它会自动调用,Yii如何知道你试图使用数组调用该函数。
你可以做一个
/*
* @dataProvider provider
*/
public function checkSampleMethod($param1,$param2,$param3,$param4)
{
$this->assertGreaterThan(0,$ApplicationID);
}
/*
* @dataProvider provider
*/
public function testSampleMethod()
{
foreach($this->provider() as $params) {
list($param1, $param2, $param3, $param4) = $params;
$this->checkSampleMethod($param1,$param2,$param3,$param4);
}
}
或类似的东西。