Symfony birim test çalışırken bir veritabanı bağlantısını açarak bir sorun var gibi görünüyor. Ben config / databases.yml belirtilen benim test env var:
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 ...
ve (test / birim / MSTest.php) de test dosyası şu görünüyor:
require_once dirname(__FILE__).'/../bootstrap/unit.php'; $a = new Article(); $a->setHeadline("Article Headline"); $a->save();
I "symfony testi: birim MS" kullanarak testi çalıştırmayı denediğinizde sadece ve çıkışlar "açık bir bağlantısı yok" döndürür. Yalnız testi (php testi / birim / MSTest.php) Koşu tam bir yığın izlemesi döndürür:
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
Ben etrafında googled ve database.yml testi doğrudan tüm ipuçları gibi görünüyor: çevre yerde (yukarıda bak). Kullanıcı adı / parola / db komut satırında adı ve kullanıcı certanly geçerli olduğunu test. other solution described here gelen unit.php içinde hattını değiştirmek için
$configuration = ProjectConfiguration::hasActive() ? ProjectConfiguration::getActive() : new ProjectConfiguration(realpath($_test_dir.'/..'));
karşı
$configuration = ProjectConfiguration::getApplicationConfiguration( 'frontend', 'test', true );
but in my case that doesn't seem karşı help either. It loads the configuration in both cases but returns different object (print_r($configuration)) as a result - ProjectConfiguration in case of default and frontendConfiguration in case of newly replaced line; the last one seems karşı have all proper configuration directives (app_xxx from app.xml file). Please advice - where else could i look? I have been clearing my cache (symfony cc), creating separate database for testing, reloading models/fixtures and so far nothing works. The models are valid and already used in application all over the place, so it has karşı be something karşı do with test environment.
PHP 5.3.1, Symfony 1.4 (XAMPP) ile MySQL 5.1.41 koşuyorum.
Teşekkürler.