0

我的存储库中有以下方法,我想测试它

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();
    }
}
4

2 回答 2

0

要查看您应该在此代码中编辑的内容,testSearchByCatergory()应该是一个好的开始。在此示例中,它将测试方法的结果输入$products并检查此集合是否仅包含一个元素。

所以我猜你的测试是测试返回的对象是你期望返回的对象。但是,嘿,就像@cheesemacfly 说的那样,你的回购有点像findOne[ById]()......哦,顺便说一句,你应该检查phpunit [EN]或者在 FR中,正如我在你的评论中看到的)文档,看看你应该如何做到跑。

干杯。:)

于 2013-05-26T01:29:17.820 回答
0

Symfony 的官方文档中,Repository 方法应该被测试如下:

// 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();
    }
}
于 2016-03-09T14:07:45.907 回答