我已使用PHPUnit
的测试功能创建了@dataProvider
测试。像这样:
/**
* @dataProvider getData
*/
public function testData($id, $name, $data) {
...
$this->assertTrue(...);
}
public function getData() {
$query = "SELECT * FROM <table_name>";
$sth = $this->_db->prepare($query);
$sth->execute();
return $sth->fetchAll(PDO::FETCH_ASSOC);
}
// -------------------------------------------------------------------
// EDIT
// same thing is happening if I return just $sth object as result.
// It's first iterate on each record to collect the all data and after run test func. For example :
public function getData() {
$query = "SELECT * FROM <table_name>";
$sth = $this->_db->prepare($query);
$sth->execute();
return $sth;
}
当测试被杀死时,这一点工作正常。这种方法存在内存问题,因为这是在测试开始之前加载整个结果集并且它始终保留在内存中。
是否在PHPUnit
中为db结果集和游标迭代(fetch)构建支持?或者我应该从测试函数中的结果集中删除@dataProvider
获取数据?我正在使用PHPUnit vesrion 4.8.15
由于
答案 0 :(得分:0)
你能给出控制台回复吗?当你使用
/**
* @return type
*/
public function getData()
{...}
您应该这样称呼它:
/**
* @dataProvider getData
*/
public function testData($fixtures)
{
$x->someFunction($fixtures['exampleAdress'];
}
但是如果我看到错误或更多关于您的代码的话,我会帮助您更多,是ORM还是没有......等等。
@EDIT:
内存不足:
phpunit -d memory_limit=128M
要么
php -d memory_limit=<memory>M -r "echo ini_get('memory_limit
);&#34;