我不明白爲什麼不工作我的方法嘲笑,因爲該方法真的運行,並且不想用模擬值返回。 (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