En rspec puede crear mock
o double
. Estos dos parecen ser casi lo mismo y no puedo encontrar nada en la documentación que los desambigua.En RSpec, ¿cuál es la diferencia entre un simulacro y un doble?
¿Cuál es la diferencia?
En rspec puede crear mock
o double
. Estos dos parecen ser casi lo mismo y no puedo encontrar nada en la documentación que los desambigua.En RSpec, ¿cuál es la diferencia entre un simulacro y un doble?
¿Cuál es la diferencia?
Ambos mock
y stub
son alias del más genérico double
. Al igual que context
y describe
, se pueden usar indistintamente para aclarar el propósito de las especificaciones. Esto se describe con mucha más detalle en The RSpec Book.
Parece que solo aliases ya que :__declared_as
no parece ser usado, pero para los mensajes.
dobles
cuando dependemos de los componentes con características deterministas, podemos encontrar que los archivos se corrompe, el disco falla, las redes de tiempo de espera, y los servidores de ir abajo en el medio de las especificaciones de funcionamiento. porque estas son cosas sobre las que no tenemos control, pueden dar lugar a resultados inconsistentes y sorprendentes cuando ejecutamos nuestras especificaciones. los dobles pueden desconectar nuestros ejemplos de las implementaciones reales de estas dependencias.
stub
cuando el comportamiento del sistema basado en una secuencia. un stub es perfecto para esto. Porque cada ejemplo puede especificar una secuencia diferente. Por ejemplo: - En el caso de un generador aleatorio, es claramente una fuente de no determinación. queremos reemplazar el generador aleatorio real con una secuencia estable.
Mocks
algún tiempo necesitamos algún servicio de otro objeto que aún no puede existir. En casos como este, podemos presentar un objeto simulado. que podemos programar para comportarnos como el objeto que actualmente esperamos. así que cuando nos enfocamos en la interacción, los objetos simulados lo hacen mucho más fácil de lograr.
también la documentación recomiendan usar '' double' sobre mock' y 'stub': También puede utilizar los métodos y simulacros de código auxiliar para crear dobles de prueba, sin embargo, estos métodos son allí sólo compatibilidad con versiones anteriores y es probable que sea obsoleto y luego eliminado de las versiones futuras (https://www.relishapp.com/rspec/rspec-mocks/) – welldan97
Las versiones más recientes de rspec incluso generan advertencias como 'DEPRECATION: stub está en desuso. Use doble en su lugar. '. – amoebe