Noté que mucha gente prefiere Mocha sobre el marco de burla incorporado de RSpec. ¿Alguien puede explicar las ventajas de Mocha, o cualquier alternativa, sobre RSpec construido en un marco de burla?¿Cuáles son las ventajas de Mocha sobre el marco de burla incorporado de RSpec?
Respuesta
Una característica específica que realmente me gusta es poder anular todas las instancias de una clase. Una gran cantidad de veces que hacer algo como lo siguiente con RSpec burla:
stub_car = mock(Car)
stub_car.stub!(:speed).and_return(100)
Car.stub!(:new).and_return(stub_car)
con Mocha que se convierte en:
Car.any_instance.stubs(:speed).returns(100)
puedo encontrar la versión Mocha más clara y explícita.
I para un uso mocha porque no uso rspec. Uso test/unit, y test/unit no tiene stubbing ni burla incorporados.
[Rspec-mocks] (https://github.com/rspec/rspec-mocks) ahora es un proyecto independiente que se puede usar en cualquier proyecto que no sea Rspec. –
Por lo que sé Mocha admite inyecciones dobles (también conocido como burla parcial, que también se admite en rr), no estoy seguro de que RSpec también admita esta función.
Además, para aquellos que prefieren cambiar entre frameworks de prueba, Mocha es una solución universal aplicable para Test/Unit, Shoulda, etc. Usar RSpec Mocking con todas estas librerías será una exageración.
[Rspec-mocks] (https://github.com/rspec/rspec-mocks) ahora es un proyecto independiente que se puede usar en cualquier proyecto que no sea Rspec. –
Rubí burlarse de los marcos han evolucionado mucho desde que esta pregunta se ha hecho en el año 2009. Así que aquí es un poco de comparación 2013:
expectativas
- con RSpec-burla:
expect(user).to receive(:say_hello)
- con Mocha:
user.expects(:say_hello).once
Stubbing un objeto
- con RSpec-burla:
user = double(name: 'John Doe')
- con Mocha:
user = stub(name: 'John Doe')
Stubbing nada
- con RSpec-burla:
User.any_instance.stub(:name).and_return('John Doe')
- con Mocha:
User.any_instance.stubs(:name).returns('John Doe')
Ofrecen las mismas instalaciones, y ambas se pueden utilizar con o sin Rspec.
Así que yo diría que elegir uno sobre otro es una cuestión de gusto personal (y saben muy bien).
Increíblemente útil para tener algunas comparaciones concretas, +1 –
- 1. ¿Cuáles son los pros y los contras de la burla de rspec frente a otros marcos de burla?
- 2. ¿Cuáles son las ventajas de concurrent.futures sobre multiproceso en Python?
- 3. Cuáles son las ventajas de C# sobre Python
- 4. Cuáles son las ventajas de MVC3 sobre MVC2
- 5. ¿Cuáles son las ventajas de usar SVN sobre CVS?
- 6. ¿Cuáles son las ventajas de usar Ruby NArray sobre Array?
- 7. ¿Cuáles son las ventajas de LePUS3 sobre UML?
- 8. ¿Cuáles son las ventajas de usar Objective-C sobre C++
- 9. ¿Cuáles son las ventajas de PyQt sobre PyGTK y viceversa?
- 10. ¿Cuáles son las ventajas de usar Qt?
- 11. ¿Cuáles son las ventajas de Perforce?
- 12. ¿Cuáles son las ventajas de usar Automapper?
- 13. ¿Cuáles son las ventajas de Lazy Evaluation?
- 14. ¿Cuáles son las ventajas de utilizar Rubinius
- 15. Cuáles son las ventajas de VistaDB
- 16. ¿Cuáles son las ventajas prácticas del currying?
- 17. ¿Cuáles son las ventajas de las macros de esquema?
- 18. ¿Cuáles son las ventajas del uso de Node.js vs PHP
- 19. ¿Cómo rspec se burla de Open-Uri?
- 20. ¿Cuáles son las ventajas de definir una clave externa
- 21. ¿Cuáles son las ventajas y desventajas de usar el GAC?
- 22. ¿Cuáles son las ventajas de VS2008 sobre VS2005 para el desarrollo de C++?
- 23. ¿Cuáles son las ventajas de LLDB sobre GDB en el desarrollo de iOS?
- 24. ¿Cuáles son las ventajas de F # sobre C# para el desarrollo de aplicaciones empresariales?
- 25. ¿Cuáles son las ventajas reales de las colecciones inmutables?
- 26. Ahora, con GWT 2, ¿cuáles son las ventajas sobre el wicket y de la misma manera?
- 27. ¿Cuáles son las ventajas de git over git-svn?
- 28. ¿Cuáles son las ventajas de QAbstractItemModel en comparación con QStandardItemModel?
- 29. ¿Cuáles son las ventajas de usar un errback?
- 30. Cuáles son algunas de las ventajas de Razor view engine sobre otros motores de vista
any_instance es probablemente * la * razón para usar Mocha. Es increíblemente poderoso y puede ahorrar mucho tiempo. –
Puede hacer esto con RSpec 2 ahora: https: //www.relishapp.com/rspec/rspec-mocks/docs/method-stubs/stub-on-any-instance-of-a-class –
Sí, esta respuesta no está actualizada. ¿Es posible "desmarcarlo"? –