我不明白为什么不工作我的方法嘲笑,因为该方法真的运行,并且不想用模拟值返回。 (Symfony的)PHPunit方法嘲弄不起作用
$this->mockedObject = $this
->getMockBuilder('Object')
//->setConstructorArgs(array('em' => $this->entityManager, 'router' => $this->mockedRouter))
->disableOriginalConstructor()
->setMethods(array('method1', 'method2'))
->getMock();
$this->mockedObject
->expects($this->once())
->method('method2')
->willReturn(9);
所以你看我嘲笑的方法2,但方法2从不与9值返回,因为它是运行:
Error: Call to a member function createQueryBuilder() on null
这里原来的方法2:
private function method2($repository) {
$qb = $this->em->createQueryBuilder();
$qb->select('count(e.id)');
$qb->from($repository, 'e');
return $qb->getQuery()->getSingleScalarResult();
}
这里的问题,因为mockedObject调用method2()与createQueryBuilder
方法
H我可以做到method2被模拟并返回9值吗?
你不能嘲笑私人方法 – Matteo
试试改变方法的可见性来保护 – Matteo