我嘗試測試一個使SELECT查詢返回找到的行的方法。我想檢查這個方法在給定數據集的情況下不會返回其他內容。我發現了很多關於創建數據集的文檔,但沒有在我的案例中使用它...感謝您的幫助。PHPUnit使用數據集在方法中測試選擇
的方法來測試是:
class A
{
public static function myMethod()
{
$result = mysql_query("SELECT * FROM user");
[...]
return $rows;
}
}
測試類是:
class ATest extends PHPUnit_Extensions_Database_TestCase
{
protected $pdo;
public function __construct()
{
$this->pdo = new PDO('mysql:host=localhost;dbname=db_name',
'login', 'password');
}
public function getConnection()
{
return $this->createDefaultDBConnection($this->pdo, 'db_name');
}
public function getDataSet()
{
return $this->createFlatXMLDataSet('mydataset.xml');
}
public function testMyMethod()
{
$actual = A::myMethod();
$this->assertEquals(array([...]), $actual);
// For this test, I get a mySQL error "No database selected"
// in A::myMethod()!
}
}
這裏是mydataset.xml的內容:
<?xml version="1.0" ?>
<dataset>
<user iduser="1" name="John" />
<user iduser="2" name="James" />
</dataset>
感謝您的回答SDC。我在setUp中調用了我的連接腳本,但現在沒有讀取數據集。只有我以前在我的數據庫中採取了。我知道PHPUnit應該對我的表進行TRUNCATE,然後在開始單元測試之前插入數據集,但它只會截斷我的表。這是否意味着代碼中的createFlatXmlDataSet()不正確? – Johor