단위 테스트를 실행하는 동안 심포니가 데이터베이스 연결을 여는 데 문제가있는 것으로 보입니다. 나는 내 테스트 ENV는 설정/databases.yml에서 지정한 :심포니 단위 테스트를 실행하면 "열린 연결이 없습니다"
all: doctrine: class: sfDoctrineDatabase param: dsn: 'mysql:host=localhost;dbname=ms' username: ms password: xxx test: doctrine: class: sfDoctrineDatabase param: dsn: 'mysql:host=localhost;dbname=ms' username: ms password: xxx ...
및 (테스트/단위/MSTest.php)에서 테스트 파일은 다음과 같습니다 : 내가 실행하려고하면
require_once dirname(__FILE__).'/../bootstrap/unit.php'; $a = new Article(); $a->setHeadline("Article Headline"); $a->save();
을 "symfony test : unit MS"를 사용하여 테스트합니다. "연결이 열려 있지 않습니다"를 반환하고 종료합니다.
C:\phpworkspace\ms>php test/unit/MSTest.php Fatal error: Uncaught exception 'Doctrine_Connection_Exception' with message 'There is no open connection' in C:\phpworkspace\ms\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Manager.php:662 Stack trace: #0 C:\phpworkspace\ms\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Manager.php(557): Doctrine_Manager->getCurrentConnection() #1 C:\phpworkspace\ms\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Core.php(1095): Doctrine_Manager->getConnectionForComponent('Article') #2 C:\phpworkspace\ms\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Record.php(219): Doctrine_Core::getTable('Article') #3 C:\phpworkspace\ms\test\unit\UniversalDemoTest.php(15) : Doctrine_Record->__construct() #4 {main} thrown in C:\phpworkspace\ms\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Manager.php on line 662
나는 주위를 봤 모든 힌트가 database.yml을 테스트에 직접처럼 보인다 : 어떤 (위의 볼) 환경이 혼자 테스트를 실행 (PHP 테스트/단위/MSTest.php)는 전체 스택 추적을 반환 그 자리에. 커맨드 라인에서 사용자 이름/패스워드/db 이름을 테스트했고 사용자는 유효합니다. other solution described here 중 하나 도움하지 않는 것 내 경우
$configuration = ProjectConfiguration::getApplicationConfiguration( 'frontend', 'test', true );
에 만에
$configuration = ProjectConfiguration::hasActive() ? ProjectConfiguration::getActive() : new ProjectConfiguration(realpath($_test_dir.'/..'));
에서 unit.php의 라인을 교체하는 것입니다. 두 경우 모두 구성을로드하지만 결과로 다른 객체 (print_r ($ configuration))를 반환합니다. - 기본값 인 경우 ProjectConfiguration, 새로 교체 된 행의 경우 frontendConfiguration. 마지막에는 모든 적절한 설정 지시어 (app.xml 파일의 app_xxx)가있는 것 같습니다. 제발 조언을 해 - 내가 어디에서 볼 수 있니? 나는 캐시 (symfony cc)를 지우고, 테스트를 위해 별도의 데이터베이스를 만들고, 모델/설비를 다시로드하고 지금까지 아무 것도 작동하지 않습니다. 이 모델은 유효하며 이미 장소에서 응용 프로그램에 사용되어 테스트 환경과 관련이 있어야합니다.
저는 symfony 1.4 (XAMPP)에서 PHP 5.3.1, mysql 5.1.41을 실행하고 있습니다.
감사합니다.
의 그! "새 sfDatabaseManager ($ 구성);"추가 수정 된 라인 트릭을 한 후에, 감사합니다! – dsomnus