sheet rails factorybot cheat bot ruby-on-rails rspec mocking factory-bot

ruby-on-rails - rails - rspec factories



¿Cuál es la diferencia entre burla, talón y fabrica? (2)

Podrías pensar en un simulacro (o doble) como un objeto falso. Cuando está probando y necesita trabajar con un objeto que no es fácil de usar dentro de su prueba, puede usar un simulacro como una aproximación de cómo espera que se comporte ese objeto y lo solucione. Los stubs se pueden usar de manera similar pero en un método individual en un objeto.

Aquí hay un ejemplo bastante artificial de usar mucho de ambos:

class Client def connect_to_server if Server.connect.status == ''bad'' show_an_error else do_something_else end end def do_something_else; end def show_an_error; end end context "failure" do it "displays an error" do bad_network_response = double("A bad response from some service", :status => ''bad'') Server.should_receive(:connect).and_return(bad_network_response) client = Client.new client.should_receive(:show_an_error) client.connect_to_server end end

Puedes imaginarte que usar muchos burlas o trozos es una mala idea; Básicamente, esto es enmascarar partes de su código en su prueba, pero es una solución fácil para algunos escenarios de prueba difíciles / raros.

Factory Girl es útil para generar datos para las pruebas. Usaría fábricas como recetas para crear instancias para sus modelos, podría necesitar probar algo que involucre una gran cantidad de datos de prueba y esta sería una situación donde el uso de dispositivos no funcionará y crear objetos complicados explícitamente puede ser tedioso.

Soy bastante nuevo para rspec y toda la metodología TDD. ¿Alguien puede explicar la diferencia entre el simulacro y el talón? ¿Cuándo los usamos y cuándo usamos Factory Girl para crear objetos en casos de prueba?


Su primera parada es el famoso artículo de Martin Fowler: Las burlas no son talones

Editar

Mocks y Stubs son dos de los tipos de Test Dobles (terminología de Mezaros). Los dobles de prueba se usan normalmente para simular las dependencias que necesita un sistema bajo prueba (o clase bajo prueba), de modo que el SUT / CUT se pueda probar de forma aislada de sus dependencias. (Advertencia: la terminología precisa puede ser un tema delicado, por ejemplo, como lo menciona Jeff aquí )

De la wikipedia:

Ejemplos

  • Un método de código auxiliar puede devolver un valor constante cuando es llamado por el SUT, por ejemplo, para realizar un caso de prueba específico del SUT.
  • * marcos como Mockito (Java) y Moq (.Net) le permiten crear clases simuladas contra la interfaz de una dependencia sobre la marcha con un mínimo de código, y proporcionar la capacidad de verificar que el SUT interactuó correctamente con el simulacro, por ejemplo, comprobando que el SUT invocó los métodos del simulacro el número correcto de veces, con los parámetros correctos.

* Descargo de responsabilidad - No soy un dev ruby