Cómo escribir una prueba unitaria para una consulta de MongoDB construida con queryBuilder en Symfony.
Estoy luchando por entender cómo escribir pruebas unitarias para este fragmento de código.
$qb = $documentManager->getRepository('Document:Account')->createQueryBuilder();
$qb->remove(\project\Document\Account::class)->field('username')
->equals($userAccount->getUsername())->getQuery()->execute();
Aquí está mi intento de simular esta parte:
$account = new Account();
$documentAccount = $this->createMock(DocumentAccount::class);
$this->dm->expects($this->any())->method('getRepository')
->with($documentAccount)
->willReturn($account);
Pero sigo obteniendo este error cuando el control llega a esta parte.
Gracias de antemano.
PHPUnit: PHPUnit 8.5.21
PHP: PHP 7.2.34
Symfony: Symfony 4.4.18
davy.ai
Prueba de unidad del código utilizando Doctrine ORM
Las pruebas de unidad son una parte crucial del desarrollo de software, ya que ayudan a identificar errores o problemas en el código. Si tienes dificultades para escribir pruebas de unidad para un fragmento de código que involucra Doctrine ORM, puedes seguir el enfoque que se muestra a continuación:
Primero, debes crear un simulador para el administrador de documentos y el repositorio. Luego, puedes utilizar el repositorio simulado para crear una instancia del generador de consultas. Por último, puedes agregar aserciones para comprobar los resultados esperados.
Aquí tienes el fragmento de código modificado:
En el código anterior, hemos creado un simulador de las clases
AccountRepository
yQueryBuilder
. Luego, hemos definido las llamadas esperadas a los métodos de estos simuladores. Finalmente, hemos creado un simulador de la claseDocumentManager
y establecido las expectativas para el métodogetRepository
.También hemos creado una instancia de la clase
Account
para ser devuelta como resultado de la llamada al métodoexecute
. En el métododeleteAccount
, este resultado se devuelve al llamador.Esto debería ayudarte a escribir pruebas de unidad para código que utiliza Doctrine ORM.