Я пытаюсь высмеять действие «Удалить». Метод удаления находится внутри службы, поэтому я хотел бы высмеять службу, запрашиваемую внутри контроллера.Сопряжение с PHPUnit в Zend Framework 2
Это действие удаления:
public function deleteAction()
{
try {
$internId = $this->params()->fromRoute('id', 0);
$this->getServiceLocator()->get('internService')->removeIntern($internId);
} catch (Exception $e) {
$this->flashMessenger()->addErrorMessage($e->getMessage() . '<br>' . $e->getTraceAsString());
}
return $this->redirect()->toRoute('intern/list');
}
Это действие выполняется служба:
public function removeIntern($internId)
{
try {
$intern = $this->getIntern($internId);
$this->removeEntity($intern);
$this->flashMessenger()->addSuccessMessage("Intern has Successfully been Removed");
} catch (Exception $e) {
}
}
Я хотел бы, чтобы дразнить этот метод внутри моего теста.
Я попытался это:
public function testDeleteAction()
{
$this->mockBjy();
$this->mockZFC();
$internMock = $this->getMockBuilder('Intern\Service\internService')
->disableOriginalConstructor()
->getMock();
$internMock->expects($this->any())
->method('removeIntern')
->will($this->returnValue(null));
$serviceManager = $this->getApplicationServiceLocator();
$serviceManager->setAllowOverride(true);
$serviceManager->setService('Intern\Service\internService', $internMock);
$this->dispatch('/intern/delete/86');
$this->assertModuleName('intern');
$this->assertControllerName('intern\controller\intern');
$this->assertControllerClass('InternController');
$this->assertActionName('delete');
$this->assertMatchedRouteName('intern/delete');
}
Я получаю ошибку в консоли при выполнении команды PHPUnit:
EntityManager # Remove() ожидает параметр 1, чтобы быть объектом объект, NULL дал.
Любая помощь будет оценена, спасибо заранее.
Удивительный, даже не подумав, что spotting это. Спасибо за помощь. – eGlu