[英]Unit tests pass when I change the order of tests
在單元測試中,我正在使用以下getDataSet方法設置數據庫。 測試類從擴展PHPUnit_Extensions_Database_TestCase擴展
看起來框架沒有在每次測試前刪除並重新插入行。 我之所以這樣認為,是因為當我更改某些測試的順序時,我的測試通過了,這是永遠不會發生的。
那么,誰能建議我在做什么錯..還是我應該進一步尋找更多的見識?
另外,我必須使用復合數據集,因為一些較舊的燈具為xml格式,而新的燈具為數組格式。 盡管這一點不需要xml固定裝置。
public function getDataSet()
{
$compositeDs = new PHPUnit_Extensions_Database_DataSet_CompositeDataSet();
/** @var PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet $ds */
$arrayDS = new ArrayDataSet([
__DIR__ . '/seed-data/companies.php',
]);
$compositeDs->addDataSet($arrayDS);
return $compositeDs;
}
可能是因為我保存了pdo連接並重用了它嗎? 如下
final public function getConnection()
{
if ($this->conn === null) {
if (self::$pdo == null) {
self::$pdo = new PDO($GLOBALS['DB_DSN'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASSWD']);
}
$this->conn = $this->createDefaultDBConnection(self::$pdo, $GLOBALS['DB_DBNAME']);
}
return $this->conn;
}
在每次測試之前都會調用getDataSet
,因此每次測試時,您的數據庫表都會被截斷並與提供的數據一起插入。
這就是為什么測試順序無關緊要的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.