Как правильно проверить службу в Symfony 4, которая также обращается к базе данных?
Я новичок в Symfony4 (до того, как я разработал для Symfony2), и я хочу написать свой первый тест для службы.
Эта служба записывает данные через базу данных Entities / Doctrine / ORM, и каждый из моих методов, которые я хочу протестировать, вызывает сохранение базы данных.
В Symfony 2 это был тот случай, когда я использовал скорее KernelTestCase вместо PHPUnit_Framework_TestCase, потому что издевательство над EntityManager было проблемой в заднице, и часто я также хотел проверить результат в тестовой базе данных.
Во всех примерах для Symfony 4 упоминается только KernelTestCase для тестирования команд.
Мой класс:
class UserPropertyService implements UserPropertyServiceInterface
{
public function __construct(EntityManager $em, LoggerInterface $logger)
{
....
}
....
}
Моя попытка теста:
class UserPropertyServiceTest extends KernelTestCase
{
/** @var UserPropertyService */
private $userPropertyService;
public function setUp()
{
self::bootKernel();
$client = static::createClient();
$container = $client->getContainer();
$this->userPropertyService = self::$container->get('app.user_management.user_property_service');
}
Результат:
Cannot autowire service "App\Service\UserManagement\UserPropertyService": argument
"$em" of method "__construct()" references class "Doctrine\ORM\EntityManager"
but no such service exists.
Try changing the type-hint to one of its parents: interface "Doctrine\ORM\EntityManagerInterface",
or interface "Doctrine\Common\Persistence\ObjectManager".
Какой здесь правильный подход? Какой тестовый класс я должен использовать?