with tests test run rails how example effective better ruby-on-rails ruby testing rspec

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.