Mock vs Stub, y otros elementos de Unit-Testing

To mock or not to mockEmpezando en el mundo de las pruebas unitarias (UT), al principio no se ve la diferencia entre un Mock y un Stub. Centrandose en PHPUnit, ambos se consiguen usando el método getMock(), y eso aún genera más confusión.

  • Stub: se genera un nuevo objeto usando el método getMock(), a partir de una clase que puede ser la misma que se esta testeando o otra clase que se usa.
  • Mock: idéntico a un Stub, pero con el añadido que en la creación del Mock, se añaden condiciones o “matchers” para comprobar la correcta utilización de la clase. Aportando así más pruebas al test.

Los siguientes diagramas quizás ayudan más a entender algo muy parecido:

Mock diagramStub diagram

A parte de un stub o un mock, también se puedan usar otros elementos para realizar las pruebas unitarias:

  • Fake: clase programada para generar objetos que aparientan un funcionamiento correcto.
  • Dummy: objetos usados para rellenar o ser pasados por parámetro. De implementación pueden estar vacíos, ya que no van a ser usados directamente.
  • Spy: stub pero además de cumplit su función, almacena información como los métodos llamados.

Un comentario en “Mock vs Stub, y otros elementos de Unit-Testing

Deja un comentario

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

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>