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);
}
문제는 어댑터 간 이스케이프 차이입니다.
--- Expected
+++ Actual
@@ @@
-SELECT foo.* FROM foo WHERE bar = 1
+SELECT "foo".* FROM "foo" WHERE "bar" = 1
그래서 여기 옳은 일이 무엇 : 나는 SQLite는 어댑터를 사용하는 경우
--- Expected
+++ Actual
@@ @@
-SELECT foo.* FROM foo WHERE bar = 1
+SELECT `foo`.* FROM `foo` WHERE `bar` = 1
: 나는 Pdo_Mysql을 사용하여이 검사를 실행할 경우,이 같은 오류가 발생합니다? Zend_Db에서 이스케이프 기능을 해제하는 방법이 있습니까?이 테스트의 목적으로 만 사용할 수 있습니까? 어댑터 유형을 하드 코드 한 다음 예상 출력을 조정하여 조정합니까? 또는 어서션을하기 전에 다른 인용 문자를 제거 할 수 있습니까?
그런 다음 둘 이상의 드라이버를 테스트하려면 어떻게됩니까? 새로운 PHP 프로세스에서이를 수행해야합니다. 이 아이디어와 함께 가고 싶다면 테스트 할 때 더 많은 유연성을 허용하는 변수를 사용하십시오 ... – ircmaxell
두 분 모두에게 감사드립니다. 어댑터에 getQuoteIdentifierSymbol() 메소드가있는 것 같아서 이것을 변수에 넣고 내 주장에 포함시킬 수있을 것입니다. –