scorpion-ds
Новичок
Для разработки логики, решил прибегнуть к UnitTest для тестирования, так как визуального интерфейса еще нет, а делать что-то надо.
Есть сервис, который содержит такой метод:
Он должен создать объект Sheet, при этом ему назначается объект Office.
При обычном использовании, все происходит как надо, но если это запустить через UnitTest:
То объект Sheet создается (записывается в БД), но при этом почему-то создается новый объект Office и уже его ID присваивается в Sheet.
Входящие объект Office точно правильный, так как:
формируется title с правильным ID, но вот при передачи:
происходит какая-то ерунда с созданием нового объекта Office.
P.S.: в принципе у меня нет опыта в работе с UnitTest, потому возможно я не понимаю, что-то очевидное ...
Есть сервис, который содержит такой метод:
PHP:
public function createSheet(Office $office, \DateTime $date)
{
if($this->getSheetByOffice($office, $date) instanceof Sheet)
{
return false;
}
$setDate = new \DateTime('first day of ' . $date->format('F') . ' ' . $date->format('Y'));
$sheet = new Sheet();
$sheet
->setDate($setDate)
->setOffice($office)
->setTitle($office->getId() . '_' . $date->format('Y-m'))
;
$this->entityManager->persist($sheet);
try
{
$this->entityManager->flush();
// Event - create <<
$event = new FilterSheetEvent($sheet);
$this->dispatcher->dispatch(SheetEvent::onCreate, $event);
// Event - create >>
}
catch(\Doctrine\DBAL\Exception\ConstraintViolationException $e)
{
error_log($e->getMessage());
return false;
}
$this->categoryManager->createRoot($sheet);
return $sheet;
}
При обычном использовании, все происходит как надо, но если это запустить через UnitTest:
PHP:
public function testCreateSheet()
{
$office = $this->getContainer()->get('fc.office.manager')->getOffice($this->officeId);
// Проверям смогли получить центр учета
$this->assertInstanceOf('\FC\OfficeBundle\Entity\Office', $office);
$date = new \DateTime();
//$date->add(new \DateInterval('P1M'));
$sheet = $this->getSheetManager()->createSheet($office, $date);
// Успешное создание
$this->assertInstanceOf('\FC\CFMBundle\Entity\Sheet', $sheet, 'Method "public function createSheet(Office $office, \DateTime $date) - we expect success"');
//$this->assertNotInstanceOf('\FC\CFMBundle\Entity\Sheet', $sheet, 'Method "public function createSheet(Office $office, \DateTime $date) - we expect failure"');
}
Входящие объект Office точно правильный, так как:
PHP:
->setTitle($office->getId() . '_' . $date->format('Y-m'))
PHP:
->setOffice($office)
P.S.: в принципе у меня нет опыта в работе с UnitTest, потому возможно я не понимаю, что-то очевидное ...