ruby on rails - rails - ¿Cuál es la diferencia entre stub_model y mock_model en RSpec?
rspec rails tutorial (1)
¿Cuál es la diferencia entre stub_model
y mock_model
en RSpec? Hasta ahora, sé que los stubs se usan para evitar que se llame al método real y devolver un valor predefinido, y los simulacros en realidad son expectativas y requieren que se llame al método en el receptor.
También sé que estos stubs / mocks se usan para permitir pruebas aisladas, como en los controladores sin tocar el modelo. Pero todavía estoy confundido con estos dos métodos, ¿cuándo se usan exactamente? Los detalles y ejemplos serían muy apreciados. ¡Muchas gracias!
stub_model
El método
stub_model
genera una instancia de un modelo de modelo activo.Si bien puede usar
stub_model
en cualquier ejemplo (modelo, vista, controlador, ayudante), es especialmente útil para ver ejemplos, que son intrínsecamente más basados en el estado que en la interacción.
mock_model
El método
mock_model
genera una prueba doble que actúa como un modelo de modelo activo. Esto es diferente del métodostub_model
que genera una instancia de una clase ActiveModel real.El beneficio de
mock_model
sobrestub_model
es que es un verdadero doble, por lo que los ejemplos no dependen del comportamiento (o mal comportamiento), o incluso de la existencia de cualquier otro código. Si está trabajando en una especificación de controlador y necesita un modelo que no existe, puede pasar amock_model
una cadena y el objeto generado actuará como si fuera una instancia de la clase nombrada por esa cadena.
rspec docs: stub_model y mock_model