我是PhpUnit的数据库测试新手。我从简单的测试开始,将PostgreSQL表的内容与xml文件进行比较。
问题是断言不能按预期工作:
请看一下结果:
http://www3.picturepush.com/photo/a/5540556/1024/Anonymous/Screenshot.png
如您所见,表格相同,但db表中的内容(屏幕上的第一个)有一个额外的空格......
我不知道出了什么问题。
这是PHP代码:
public function testGetSourceData()
{
include_once(
sfConfig::get('sf_lib_dir')
. '/task/ShopCategoryTreeUpdateTask.class.php'
);
$method = new ReflectionMethod(
'ShopCategoryTreeUpdateTask', '_getSourceData'
);
$method->setAccessible(TRUE);
$res = $method->invoke(new ShopCategoryTreeUpdateTask(new sfEventDispatcher, new sfFormatter),123);
$actual = new PHPUnit_Extensions_Database_DataSet_QueryDataSet($this->getConnection());
$actual->addTable('shop');
$expected = $this->getDataSet();
$this->assertDataSetsEqual(
$actual,
$expected
);
}
这里是XML: http://pastebin.com/5MmtJDr6
感谢您的任何目标!
答案 0 :(得分:1)
我认为你可能会使测试过于复杂化。在您的方法中,QueryDataSet和getDataSet可能会以不同的方式将结果呈现为字符串。
您不应该通过反射来测试私有和公共方法,因为这些方法应该是可测试的,并且可以通过公共方法访问。如果他们不能通过公共方法访问,那么他们永远不会被调用。您的代码覆盖率报告在此处派上用场。