I am writing an application using the PHP CodeIgniter Framework. I am trying to test an application using CI_Unit, with the extension PHPUnit. To test the model, I try to load the YAML data provider, as defined in the PHPUnit documentation, I get an error. If I mess up the data provider object, I get another error. If I provided him with a vanilla PHP array, it would work as expected.
What am I doing wrong? What is the right way to do this? Below are my results:
If I return PHPUnit_Extensions_Database_DataSet_YamlDataSetthe Yaml file object below, I get:
Clients dataset is invalid.
If I loop the object returned PHPUnit_Extensions_Database_DataSet_YamlDataSetand return it: I get this error:
PHPUnit_Framework_Exception: neither "models.php" nor "models.php" can be opened. in /Users/eric/pear/share/pear/PHPUnit/Util/Skeleton/Test.php on line 100
If I provided him with a vanilla PHP array, the tests would work fine. The command I use to run the tests is:
phpunit models
Below is an example of my YAML file.
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
I am using PHP 5.3, PHPUnit 3.6.10, DBUnit 1.1.2, CodeIgniter 2.1.0 and CI_unit related to CI 2.1.0.
Edit: Attached my models / Test.php file:
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");
foreach($result as $key => $value){
if($key == 'Clients'){
$substructure = $value;
}
}
return $substructure;
$data = array(
array(1,1,1,'test','text 2'),
array(1,2,1,'test 3', 'test 3'));
return $data;
}