У меня есть следующий метод в моем репозитории, и я хочу его протестировать
public function myFindOne($id) { // On passe par le QueryBuilder vide de l'EntityManager pour l'exemple $qb = $this->_em->createQueryBuilder(); $qb->select('a') ->from('xxxBundle:entity', 'a') ->where('a.id = :id') ->setParameter('id', $id); return $qb->getQuery() ->getResult();}
Я нашел следующий код в документации, но я не мог понять его
// src/Acme/StoreBundle/Tests/Entity/ProductRepositoryFunctionalTest.php namespace Acme\StoreBundle\Tests\Entity; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ProductRepositoryFunctionalTest extends WebTestCase { /** * @var \Doctrine\ORM\EntityManager */ private $em; /** * {@inheritDoc} */ public function setUp() { static::$kernel = static::createKernel(); static::$kernel->boot(); $this->em = static::$kernel->getContainer() ->get('doctrine') ->getManager() ; } public function testSearchByCategoryName() { $products = $this->em ->getRepository('AcmeStoreBundle:Product') ->searchByCategoryName('foo') ; $this->assertCount(1, $products); } /** * {@inheritDoc} */ protected function tearDown() { parent::tearDown(); $this->em->close(); } }
Чтобы увидеть, что вы должны редактировать в этом коде, testSearchByCatergory()
должен быть хорошим началом. В этом примере он получает результат тестируемого метода в $products
и проверяет, что эта коллекция содержит только один элемент.
Поэтому я предполагаю, что ваш тест будет проверять, что возвращаемый объект является тем, который вы ожидаете получить. Но хе-хе, например @cheesemacfly, сказал, что ваше репо findOne[ById]()
… О, и BTW, вы должны проверить phpunit [EN] ( или в FR , как я видел в вашем комментарии) документацию к посмотрите, как вы должны его запустить.
Приветствия. 🙂
Из официальной документации Symfony методы репозитория должны быть протестированы следующим образом:
// tests/AppBundle/Entity/ProductRepositoryTest.php namespace Tests\AppBundle\Entity; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; class ProductRepositoryTest extends KernelTestCase { /** * @var \Doctrine\ORM\EntityManager */ private $em; /** * {@inheritDoc} */ protected function setUp() { self::bootKernel(); $this->em = static::$kernel->getContainer() ->get('doctrine') ->getManager(); } public function testSearchByCategoryName() { $products = $this->em ->getRepository('AppBundle:Product') ->searchByCategoryName('foo') ; $this->assertCount(1, $products); } /** * {@inheritDoc} */ protected function tearDown() { parent::tearDown(); $this->em->close(); } }