0
我想使用PHPUnit來單元測試一些返回SQL的類方法。這些類應該可以與任何Zend_Db適配器一起工作,所以我希望測試能夠做到這一點。我的測試看起來有點像這樣:單元測試返回SQL的類
public function testEtcGeneratesCorrectSQL()
{
$model = new ClassBeingTested();
// do some stuff
$sql = $model->__toString();
$this->assertEquals('SELECT foo.* FROM foo WHERE bar = 1', $sql);
}
問題是在適配器之間轉義的差異。如果我使用SQLite適配器
--- Expected
+++ Actual
@@ @@
-SELECT foo.* FROM foo WHERE bar = 1
+SELECT `foo`.* FROM `foo` WHERE `bar` = 1
:
--- Expected
+++ Actual
@@ @@
-SELECT foo.* FROM foo WHERE bar = 1
+SELECT "foo".* FROM "foo" WHERE "bar" = 1
有啥這裏做正確的事情。如果我使用運行PDO_MYSQL這個測試中,我會得到這樣的錯誤?有沒有辦法在Zend_Db中禁用轉義我可以打開只是爲了這些測試的目的?我是否在適配器類型中硬編碼,然後調整我的預期輸出以匹配?或者在斷言之前刪除不同的引號字符?
然後如果你想測試多個驅動程序會發生什麼?你不得不在新的PHP過程中完成它。如果你想要這個想法,使用變量,因爲它可以在測試時提供更多的靈活性... – ircmaxell 2010-08-19 18:06:12
感謝你們倆。看來適配器有一個getQuoteIdentifierSymbol()方法,所以我可以把它放到一個變量中幷包含在我的斷言中 – 2010-08-19 19:13:13