#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
).