2011-07-24 13 views
17

Hay bastantes escritos sobre stub vs mocks, pero no puedo ver la verdadera diferencia entre fake y stub. ¿Alguien puede aclararlo?Software de prueba: fake vs stub

+1

posible duplicado de [¿Cuál es la diferencia entre la falsificación y burlona, ​​y tropezar?] (Http://stackoverflow.com/questions/346372/whats-the-difference-between-faking-mocking-and-stubbing) – nawfal

Respuesta

24

Asumo que usted se refiere a la terminología introducida por Meszaros. Martin Fowler también hace mentions them regularmente. Creo que explica la diferencia bastante bien en ese artículo.

Sin embargo, voy a tratar de nuevo en mis propias palabras :)

una falsificación está más cerca de una implementación en el mundo real que un trozo. Los Stubs contienen básicamente respuestas hard-coded a una solicitud esperada; se usan comúnmente en pruebas unitarias, pero son incapaces de manejar entradas que no sean las preprogramadas.

Las falsificaciones tienen una implementación más real, como algún tipo de estado que pueda conservarse, por ejemplo. Pueden ser útiles para las pruebas del sistema, así como para fines de prueba de la unidad, pero no están destinados para el uso de producción debido a alguna limitación o requisito de calidad.

5
+3

Eso El primer enlace muestra cuán complejo es este tema y cómo dos personas parecen no compartir las mismas definiciones. A modo de ejemplo, la respuesta a la pregunta de StackOverflow [¿Cuál es la diferencia entre falsificar, burlarse y anotar?] (Http://stackoverflow.com/questions/346372/whats-the-difference-between-faking-mocking-and-stubbing) parece revertir las definiciones de Stub y Fake en comparación con la respuesta de Thorarin a esta pregunta. –

+3

Perdón por nitpick, pero es una buena práctica resumir las partes relevantes de los enlaces en caso de que mueran. Una respuesta debería ser más que enlaces. – kdbanman

10

A falso tiene el mismo comportamiento que el que reemplaza.

A stub tiene un conjunto "fijo" de respuestas "enlatadas" que son específicas de su (s) prueba (s).

A simulacro tiene un conjunto de expectativas sobre las llamadas que se realizan. Si no se cumplen estas expectativas, la prueba es fallida.

Todos estos son similares ya que reemplazan a los colaboradores de producción que codifican para usos de prueba.

Cuestiones relacionadas