사이트 포인트 Testing Symfony Apps with a Disposable Database 자습서를 따랐습니다. 테스트 케이스에 Fixtures를 추가했는데 SetUp 중에 오류가 나타나지 않습니다. 조명기에 오류 (예 : , nullable = false 필드를 비워두면)를 표시하면 오류가 표시되므로이 코드가 올바르게 실행됩니다.메모리에 sqlite가 항상 비어 있음
내 구성 : 내 WebTestCase에서
doctrine:
dbal:
default_connection: memory
connections:
memory:
driver: pdo_sqlite
memory: true
charset: UTF8
내 설정 :
protected function setUp() {
parent::setUp();
self::bootKernel();
DatabasePrimer::prime(self::$kernel);
$this->loadFixtures([
'AppBundle\DataFixtures\ORM\UserData',
'AppBundle\DataFixtures\ORM\ArtistData'
]);
}
그러나, 내 WebTestCase에 어떤 테이블이 존재하지 않는 것으로 보인다. 출력 결과 내 테이블이 존재하지 않는다는 Doctrine Exception이 발생합니다.
dbal:
default_connection: file
connections:
file:
driver: pdo_sqlite
path: %kernel.cache_dir%/test.db
charset: UTF8
누구나 말했다으로 성공을 거두었 튜토리얼 또는 단위 테스트에 대한 SQLite는 메모리 DB를 사용하고 힌트가 있습니다
SQLSTATE[HY000]: General error: 1 no such table: my_user_table
내가 파일에 sql_lite로 전환하면, 모든 다른 변경 사항없이 잘 작동 또는 아이디어?
업데이트 : 커널을 중간에 종료하지 않도록 설정을 변경했습니다. 도움이되지 않았습니다 :
parent::setUp();
$this->client = $this->getClient();
MemoryDbPrimer::prime(self::$kernel);
$this->loadFixtures([
'AppBundle\DataFixtures\ORM\UserData',
'AppBundle\DataFixtures\ORM\ArtistData'
]);
'memory'에서 연결 이름을 변경해 보셨습니까? 예 :'default_connection : memory'를'default_connection : default' 또는 다른 이름으로 변경 하시겠습니까? 해당 예약어를 사용하면 (연결 데이터 자체의 속성이므로) 문제가 발생했을 수 있습니다. 조명기 파일을 게시하는 것도 가치가 있습니다. –
@ 존 조셉 : 나는 그것을 시도했으나 아무런 효과가 없었다. 내 비품 파일은 상당히 커서, 그렇게하지 않을 것입니다. 또한, sqllte 파일에서 더 작동하기 때문에, 나는 나의 비품이 문제인지 의심 스럽다. –
아직도 커널이 어떻게 든 종료/재부팅되는 것으로 생각합니다.어디에서, 당신은'print ("bootKernel() \ n"); 'symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php'의'bootKernel()'함수의 맨 위에서'debug_print_backtrace();'를 실행 한 다음 영향을받은 테스트 케이스 중 하나를 실행하십시오. – aferber