我有一个PHPUnit测试用例,用于测试对MySQL数据库进行一系列操作的函数。
当我通过PHPUnit运行测试时,该函数未完全运行,MySQL数据库无法使用数据执行所有必需的操作,因此PHPUnit返回false。另一方面,当我通过浏览器功能运行完全相同的操作时返回预期的结果。除此之外,在不同的测试用例中完成相同的过程也能正常工作。
如何解决此问题?
我已经调查了更多的问题是我从mysql获取数据的方式。下面的代码由于某种原因从数据库中获取不正确的mysql结果。
$dataSet = $this->getConnection()->createDataSet(array('media'));
$filterDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet);
$filterDataSet->setExcludeColumnsForTable('media', array('Filename', 'Type', 'Size'));
$expectedDataSet = $this->createXMLDataSet(dirname(__FILE__) . '\xml\MoveUpItem3.xml');
$this->assertDataSetsEqual($expectedDataSet, $filterDataSet);
我必须直接运行一个查询,如下所示,它从MySQL返回正确的输出:
$queryTable = $this->getConnection()->createQueryTable(
"media", "SELECT `ID`, `Title`, `Description`, `album_id`, `position`
FROM `media`;");
$expectedTable = $this->createXMLDataSet(dirname(__FILE__) . '\xml\MoveUpItem2.xml');
$expectedTable = $expectedTable->getTable("media");
为什么会出现这个问题?