ruby-on-rails - tests - rspec rails 5
En RSpec, ¿cuál es la diferencia entre un simulacro y un doble? (3)
Parecen ser aliases ya que :__declared_as
no parece ser usado, sino para mensajes.
En rspec puedes crear un mock
o un double
. Estos dos parecen ser casi lo mismo y no puedo encontrar nada en la documentación que los desambigua.
¿Cual es la diferencia?
Tanto el mock
como el stub
son alias del double
más genérico. Al igual que el context
y la describe
, se pueden usar indistintamente para aclarar el propósito de las especificaciones. Esto se describe con mucho más detalle en The RSpec Book .
dobles
cuando dependemos de componentes con características no deterministas, podemos encontrar que los archivos se corrompen, el disco falla, el tiempo de espera de las redes y los servidores descienden en medio de las especificaciones en ejecución. 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.
talón
cuando el comportamiento del sistema se basa en una secuencia. un stub es perfecto para esto. Porque cada ejemplo puede especificar una secuencia diferente. 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
En algún momento necesitamos algún servicio de otro objeto que aún no existe. 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.