Crear un mock en PHPUnit de una clase inexistente

mockbuilder en phpunit

Puede darse el caso, trabajando con test unitarios, que necesitemos de una clase ficticia para testear alguna funcionalidad. En ese caso, solo necesitamos usar la función getMockBuilder para crear una clase ficticia, y sobre dicha clase haremos un mock. Para entender mejor su uso, veremos un ejemplo.

Ejemplo de uso

Supongamos que tenemos un administrador de documentos DocumentManager. Dicho administrador, permite agregar cualquier tipo de documento con addManager($document). Esta es la funcionalidad que queremos testear. Vemos como sería el Test Unitario sin usar MockBuilder.

Como podemos ver, el test queda acoplado a la clase Post (aunque débilmente). Si dicha clase deja de existir, o deja de implementar un método getSlug(), provocará que nuestro test falle incluso cuando DocumentManager siga funcionando correctamente.

Solución

Como hemos dicho disponemos de MockBuilder para crear una clase ficticia.

Los pasos para realizar el mock son muy sencillos:

  1. getMockBuilder() con el nombre de la clase.
  2. Definimos los métodos que necesitamos que tenga con setMethods.
  3. Obtenemos el mock con getMock().

Espero que os sirva.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *