2015-01-28 3 views
1

필자의 기능 테스트에서별로 논리적이지 않은 문제가 있습니다.Symfony 2 기능 테스트

테스트는 간단합니다. 단지 홈페이지를 요청하고 그 안에 특정 클래스가있는 요소를 검색합니다.

홈페이지는 기사 목록을 표시하는 블로그 용입니다. 그리고 각 기사는 여러 개의 페이지 (일대 다)를 가질 수 있으며 각 페이지는 자신의 추천 이미지입니다.

홈페이지에서 (twig) $ article-> getPages() -> first() -> getImageUrl()을 수행합니다.

동일한 조명기를 사용하고 브라우저에서 페이지에 액세스하면 모든 것이 표시되지만 테스트를 실행할 때 "알 수없는 객체에 getImageUrl에 액세스 할 수 없습니다"라는 예외가 발생합니다. DB에서 기사 페이지를 가져 오지 않습니다.

테스트에서 직접 기사에 대한 db 쿼리를 수행하고 모든 기사 ($ article-> getPages() -> first() -> getImageUrl())를 반복 할 때이 문제는 낯선 것입니다. . self :: $ client-> request() 호출을 사용할 때만 작동하지 않습니다.

필자는 조명기를 들여다 보았고 심지어 쿼리 작성기에 명시 적 innerJoin()을 추가하고 데이터베이스에 올바른 데이터가 있는지 수동으로 확인했습니다.

또한, 다른 기능 테스트를 통해 자신의 조명기를로드하고이 조명기를 제외하고는 모두 작동합니다.

이것은 아래 테스트 코드입니다. 전적으로 실행될 때와 전체 테스트 세트로 실행될 때 모두 실패합니다. 내가 엔티티 관리자를 삭제하면이 작업 내 테스트를 만드는 것을 발견

+0

엔티티 관리자를 삭제하면 테스트가 작동하는 것으로 나타났습니다 ... 그래서 self :: $ client-> getContainer() -> get ('doctrine') -> getManager() -> clear); – Stev

+0

솔루션과 함께 답변을 추가하고 동의 할 수 있습니다. 이 문제는 해결 된 것으로 표시됩니다. –

답변

0

사전에

public function testSocialBoxPositionWithFeatured() 
{ 
    self::runCommand('h4cc_alice_fixtures:load:files --drop src/SNN/AdminBundle/Fixtures/Nelmio.yml'); 

    $crawler = self::$client->request('GET', '/'); //go to homepage 

    $classes = $crawler 
      ->filter('.postsContainer > .col-md-4') 
      ->eq(5) 
      ->children() 
      ->first() 
      ->attr("class"); 

    $this->assertContains("socialBox", $classes); 
} 

덕분에 ... 그래서 난 그저 자아를 추가 : $ 클라이언트 -> getContainer에() -> '(GET doctrine ') -> getManager() -> clear();