2015-12-04 19 views
6

Tôi đang sử dụng đồ đạc doctrine để tải dữ liệu thử nghiệm trong ứng dụng symfony của mình.Làm thế nào để có được tài liệu tham khảo tài liệu tham khảo theo loại fixture trong thử nghiệm trong symfony WebTestCase?

$this->fixtureLoader = $this->loadFixtures([ 
      "My\DemonBundle\DataFixtures\ORM\LoadEntity1Data", 
      "My\DemonBundle\DataFixtures\ORM\LoadEntity2Data", 
      "My\DemonBundle\DataFixtures\ORM\LoadEntity3Data", 
      "My\DemonBundle\DataFixtures\ORM\LoadEntity4Data", 
      "My\DemonBundle\DataFixtures\ORM\LoadEntity5Data", 
      'My\DemonBundle\DataFixtures\ORM\LoadEntity6Data' 
]); 

Trong trường hợp thử nghiệm của tôi, tôi muốn thử nghiệm có được thực thể được phân trang.

public function testGetPaginated() 
{ 

    $entities6 = $this->fixtureLoader->getReferenceRepository()->getReferences(); 

    $expected = array_slice($entities6, 3, 3); 

    $this->client = static::makeClient(); 
    $this->client->request('GET', '/api/v1/entities6', ["page" => 2, "limit" => 3, "order" => "id", "sort" => "asc"], array(), array(
     'CONTENT_TYPE' => 'application/json', 
     'HTTP_ACCEPT' => 'application/json' 
    )); 


    $this->assertSame($expected, $this->client->getResponse()->getContent()); 

} 

Tôi muốn so sánh trang từ đồ đạc của tôi và từ phản hồi api. Vấn đề là dưới dòng trả về tất cả các tham chiếu lịch thi đấu. Thực thể tôi muốn kiểm tra thuộc loại Entity6. Entity6 có sự phụ thuộc vào tất cả các loại khác vì vậy tôi phải tải tất cả chúng.

$ entity = $ this-> fixtureLoader-> getReferenceRepository() -> getReferences();

Làm cách nào để chỉ nhận được các liên kết của loại Entity6? Tôi đào vào

thuyết \ Common \ DataFixtures \ ReferenceRepository :: getReferences đang

/** 
* Get all stored references 
* 
* @return array 
*/ 
public function getReferences() 
{ 
    return $this->references; 
} 

Không có tùy chọn để có được tài liệu tham khảo của loại cụ thể. Tôi cố gắng lặp trên tất cả các tài liệu tham khảo để kiểm tra kiểu lớp sử dụng get_class

foreach ($references as $reference) { 
     $class = get_class($obj); 
     if ($class == "My\DemonBundle\Entity\ORM\Entity6") { 
      $expected[] = $obj; 
     } 
    } 

Nhưng tài liệu tham khảo được entitites thuyết proxy để tôi nhận được kiểu lớp

Proxies\__CG__\My\DemonBundle\Entity\ORM\Entity6 

Làm thế nào để có được tài liệu tham khảo của loại thực thể từ đồ đạc thuyết ? Tiền tố Proxies__CG__ có thể không phải là cách tốt nhất để làm điều này? Cách đáng tin cậy nhất là gì?

Trả lời

0

Không sử dụng get_class, sử dụng instanceof:

foreach ($references as $reference) { 
    if ($reference instanceof \My\DemonBundle\Entity\ORM\Entity6) { 
     $expected[] = $obj; 
    } 
} 

thuyết proxy kế thừa lớp thực thể, do đó hoàn thành instanceof.

Các vấn đề liên quan