Yii单元测试中的数据提供者

时间:2014-03-14 03:16:29

标签: php unit-testing yii

我正在使用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()

我理解功能测试对于控制器更好,对模型进行单元测试。我只是想让数据提供程序运行。

先谢谢。

1 个答案:

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

或类似的东西。

相关问题