title: Objeto simulado
text: # Objeto simulado
  
  En la programación orientada a objetos se llaman objetos simulados (pseudoobjetos, mock object, objetos de pega) a los objetos que imitan el comportamiento de objetos reales de una forma controlada. Se usan para probar a otros objetos en pruebas unitarias que esperan mensajes de una clase en particular para sus métodos, al igual que los diseñadores de autos usan un crash dummy cuando simulan un accidente.
  
  En los test de unidad, los objetos simulados se usan para simular el comportamiento de objetos complejos cuando es imposible o impracticable usar al objeto real en la prueba. De paso resuelve el problema del caso de objetos interdependientes, que para probar el primero debe ser usado un objeto no probado aún, lo que invalida la prueba: los objetos simulados son muy simples de construir y devuelven un resultado determinado y de implementación directa, independientemente de los complejos procesos o interacciones que el objeto real pueda tener.
  
  Los objetos simulados se usan en lugar de objetos reales que tengan algunas de estas características:
  
  * Devuelven resultados no determinísticos (por ejemplo la hora o la temperatura)
  * Su estado es difícil de crear o reproducir (por ejemplo errores de conexión)
  * Es lento (por ejemplo el resultado de un cálculo intensivo o una búsqueda en una BBDD)
  * El objeto todavía no existe o su comportamiento puede cambiar.
  * Debería incluir atributos o métodos exclusivamente para el testeo.
  
  Los objetos simulados para imitar al objeto real deben imitar su misma interfaz.
  
  