Это функция, которую я хочу проверить на менеджере (Генеалогия Manager.php) Когда я запускаю команду PHPUnit дает следующее сообщение об ошибке:Как проверить методы менеджера, потребляющие в QueryBuilder на Symfony2 с использованием PHPUnit
Call to a member function getSingleScalarResult() on null in /home/majri/Documents/projects/IadDirectoryApp/vendor/iad-holding/genealogy-bundle/Iad/Bundle/GenealogyBundle/Manager/GenealogyManager.php on line 77
/**
* @param Genealogy $genealogy
* @return mixed
*/
public function getCountManagerialLevelsByGenealogy(Genealogy $genealogy)
{
$qb = $this->getRepository()->createQueryBuilder('gen');
$qb->select('count(distinct(gen.level))')
->where($qb->expr()->lt('gen.right', $genealogy->getRight()))
->andWhere($qb->expr()->gt('gen.left', $genealogy->getLeft()))
;
return $qb->getQuery()->getSingleScalarResult();
}
** Моя функция тестирования единицы **
public function testGetCountManagerialLevelsByGenealogy()
{
$em = $this->getMockBuilder(EntityManager::class)
->disableOriginalConstructor()
->getMock();
$repository = $this->getMockBuilder(EntityRepository::class)
->disableOriginalConstructor()
->getMock();
$em->expects($this->once())
->method('getRepository')
->with('IadGenealogyBundle:Genealogy')
->will($this->returnValue($repository));
$queryBuilder = $this->getMockBuilder(QueryBuilder::class)
->setMethods(['select','where','setParameter','getQuery'])
->disableOriginalConstructor()
->getMock();
$repository->expects($this->once())
->method('createQueryBuilder')
->with('gen')
->will($this->returnValue($queryBuilder));
$queryBuilder->expects($this->at(0))
->method('select')
->will($this->returnValue($queryBuilder));
$queryBuilder->expects($this->at(1))
->method('where')
->will($this->returnValue($queryBuilder));
$queryBuilder->expects($this->at(2))
->method('setParameter')
->will($this->returnValue($queryBuilder));
$getQuery = $this->getMockBuilder('\Doctrine\ORM\AbstractQuery')
->setMethods(array('setParameter', 'getSingleScalarResult'))
->disableOriginalConstructor()
->getMockForAbstractClass();
$getQuery->expects($this->once())
->method('setParameter')
->will($this->returnValue($queryBuilder));
$getQuery->expects($this->any())
->method('getSingleScalarResult')
->will($this->returnValue(3));
$queryBuilder->expects($this->at(3))
->method('getQuery')
->will($this->returnValue($getQuery));
$genealogyManager = new GenealogyManager($em);
$this->assertEquals(3, $genealogyManager->getCountManagerialLevelsByGenealogy($this->buildMockGenealogy(9)));
}
Благодарим вас за ответ, но у меня нет проблем на уровне запроса, но на уровне модульного теста – user3046915