Правильное утверждение для тестирования объектов Doctrine в Symfony2

#php #unit-testing #symfony #doctrine-orm #phpunit

#php #модульное тестирование #symfony #doctrine-orm #phpunit

Вопрос:

Я пишу некоторый тест для своих объектов, и это код:

 $device = new Device();
$strTool = new StringTools();

$imei = $strTool->randomNumber(17);
$device->setImei($imei);
$device->setDescription($strTool->generateRandomString(50));

$this->em->persist($device);
$this->em->flush();

$devices = $this->em->getRepository('DeviceBundle:Device')->findOneBy(array('imei' => $imei));

$this->assertCount(1, $devices);
$this->assertTrue(is_object($device));
  

Но первый тест assertCount завершается неудачей с этим сообщением:

PHPUnit_Framework_Exception: Аргумент # 2 (без значения) PHPUnit_Framework_Assert::assertCount() должен быть счетным или проходимым

Как правильно протестировать полученные результаты из базы данных?

Ответ №1:

findOneBy возвращает только один элемент, вместо этого используйте findBy .

кстати, то, что вы тестируете здесь, — это сама Doctrine. Doctrine довольно хорошо протестирована, поэтому вам не нужно этого делать.

Комментарии:

1. Я пытаюсь протестировать свои объекты, чтобы увидеть, правильно ли они сопоставлены и так далее, Как вы тестировали объекты?

2. Нет необходимости тестировать ваши объекты, если ваш установщик или получатель не добавит дополнительную логику (например: getFullName = getFirstname.' '.getLastname ). Однако вам необходимо протестировать, например, пользовательские методы внутри ваших репозиториев сущностей (например: getPostWithTheMostComments ).