Я пишу модульные тесты кода для класса Manager в своем приложении Symfony2, и мне интересно, как издеваться над менеджером сущностей. Например, допустим, у меня есть следующая функция в моем классе обслуживания AcmeManager:
<?php
namespace Acme\AcmeBundle\Manager;
use Doctrine\Common\Persistence\ObjectManager;
class AcmeManager
{
private $em;
public function __construct (ObjectManager $em)
{
$this->em = $em;
}
public function findMatches($index)
{
// Find and display matches.
$matches = $this->em
->getRepository('AcmeBundle:AssignMatch')
->findBy(array('assignIndex' => $index));
return $matches;
}
}
и я хотел написать следующую тестовую функцию:
<?php
use Codeception\Util\Stub;
class AutoManagerTest extends \Codeception\TestCase\Test
{
/**
* @var \CodeGuy
*/
protected $codeGuy;
protected function _before()
{
}
protected function _after()
{
}
/**
* Tests findMatches($index).
*/
public function testFindMatches()
{
//... $mockedEntityManager is our mocked em
$acmeManager = $this->getModule('Symfony2')->container->get('acme_manager');
$acmeManager->findMatches(0);
// $this->assert(isCalled($mockedEntityManager));
}
}
Как я могу имитировать диспетчер сущностей, чтобы при вызове $acmeManager->findMatches(0); я мог утверждать, что вызывается имитируемый менеджер сущностей (даже несмотря на то, что $acmeManager использует обычный диспетчер сущностей Symfony2 в своей обычной реализации)?