Zend Framework 프로젝트를 시작하고 Zend_Db 클래스 대신 Doctrine 1.2.3을 사용하기로 결정했습니다. 내 프로젝트와 교리 명령 줄 스크립트, 내 인덱스 컨트롤러가 문제없이 내 데이터베이스를 조회 할 수 있습니다 잘 작동 구성되어 있지만 phpunit을 가진 단위 테스트에서 오류가 발생합니다 : 나는 PHP 5.3 젠드 서버를 사용하고Zend Framework 프로젝트에서 sfYaml echoln() 오류 PHPUnit 테스트
Fatal error: Cannot redeclare echoln() (previously declared in D:\Zend\Apache2\vhost\myproject\library\Doctrine\Parser\sfYaml\sfYaml.php:132) in D:\Zend\ZendServer\bin\PEAR\SymfonyComponents\YAML\sfYaml.php on line 135
. PHPUnit에는 PEAR SymfonyComponents의 YAML 패키지가 필요합니다. 이것은 유닛 테스트 부트 스트랩이 조명기 파일을로드 할 때 특히 전체 테스트 데이터베이스를 다시 만들고로드하려고 할 때마다 발생합니다. 이것은 전체 명령 및 출력입니다.
D:\Zend\Apache2\vhost\myproject\tests>phpunit
build-all-reload - Successfully dropped database for connection named 'doctrine'
build-all-reload - Successfully created database for connection named 'doctrine'
build-all-reload - Created tables successfully
build-all-reload - Data was successfully loaded
PHPUnit 3.5.10 by Sebastian Bergmann.
Fatal error: Cannot redeclare echoln() (previously declared in D:\Zend\Apache2\vhost\myproject\library\Doctrine\Parser\sfYaml\sfYaml.php:132) in D:\Zend\ZendServer\bin\PEAR\SymfonyComponents\YAML\sfYaml.php on line 135
D:\Zend\Apache2\vhost\myproject\tests>
결과적으로 데이터베이스가 완전히 생성되고 데이터 픽스처가 성공적으로로드됩니다. 그러나이 오류는 단위 테스트 프로세스를 중지합니다. Doctrine 모델에 대한 테스트 클래스는 하나 뿐이지 만 테스트 코드에 주석을 추가하더라도이 오류가 발생합니다.
Doctrine 스크립트를 직접 실행하면 문제없이 실행되므로 시스템이 웹을 통해 실행될 때 오류가 발생하지 않으므로 이상합니다. 이것은 단지 단위 테스트에서 발생합니다.
Doctrine과 PHPUnit 모두 PEAR 및 Doctrine과 동일한 sfYaml 클래스가 작동중인 시스템을 손상시키지 않으면이 라이브러리 충돌을 피할 수 있습니까?