我写使用PHP框架CodeIgniter的应用程序。 我想测试使用CI_Unit的应用程序,通过扩展PHPUnit的。 要测试模型,我想作为PHPUnit文档中定义加载YAML数据提供者,我收到一个错误。 如果我捏造数据提供程序对象,我得到另一个错误。 如果我提供它香草PHP阵列,它运行正常。
我究竟做错了什么? 什么是这样做的正确方法? 下面是我的结果:
如果我返回对象PHPUnit_Extensions_Database_DataSet_YamlDataSet
低于YAML文件,我得到:
数据集“客户”是无效的。
如果周围返回的对象我环路PHPUnit_Extensions_Database_DataSet_YamlDataSet
并返回:我得到这个错误:
PHPUnit_Framework_Exception:既不是“models.php”,也不是“models.php”可以打开。 在/Users/eric/pear/share/pear/PHPUnit/Util/Skeleton/Test.php上线100
如果我提供它香草PHP阵列,测试运行就好了。 我用它来运行测试的命令是:
PHPUnit的车型
下面是我的YAML文件的例子。
Clients:
1:
client_id: 1
client_information: "info number 1"
client_key: 48fb10b15f3d44a09dc82d
2:
client_id: 2
client_information: "info number 2"
client_key: 48fb10b15f3d44addd
我使用PHP 5.3,PHPUnit的3.6.10,DBUnit的1.1.2,2.1.0笨,并与CI 2.1.0关联CI_unit。
编辑:附件是我的模型/ test.php的文件:
/**
* test_add_client
* @dataProvider add_client_provider
*/
public function test_add_client($client_id,$company_id,$software_id,$client_information,$client_key)
{
$data = array('software_id' => $software_id,
'client_information' => $client_information,
'client_key' => $client_key);
try {
$id = $this->_m->add_client($company_id,$data);
$this->assertEquals(true, is_int($id));
} catch (Exception $e){
$this->assertEquals(true,false);
}
}
public function add_client_provider()
{
$result = new PHPUnit_Extensions_Database_DataSet_YamlDataSet(
dirname(__FILE__)."/../fixtures/Clients.yml");
// Case #1 returns this $result
//return $result;
foreach($result as $key => $value){
if($key == 'Clients'){
$substructure = $value;
}
}
// Case #2 return the inner structure that is the table
return $substructure;
// Case #3 return an array of arrays
$data = array(
array(1,1,1,'test','text 2'),
array(1,2,1,'test 3', 'test 3'));
return $data;
}