ruby-on-rails - test_helper - rspec rails
Al realizar pruebas con rspec, ¿dónde colocar los “métodos de utilidad de prueba” comunes? (2)
Supongamos que tienes un sitio de compras que vende widgets. Sin embargo, el inventario de cada widget es limitado, por lo que es importante mantener actualizado el número "widget.number_still_available".
Me gustaría escribir una prueba rspec a lo largo de las líneas de
it "always displays the correct number still available" do
# Assume there is a before method that sets up a widget with 5 available
widget.number_still_available.should == 5
# User "[email protected]" purchases 2 widgets
widget.number_still_available.should == 3
# User "[email protected]" purchases 1 widget
widget.number_still_available.shhould == 2
# User "[email protected]" cancels purchase of 1 widget
widget.number_still_available.should == 4
end
Me gustaría poder escribir métodos de solo prueba que realicen los métodos de "compra" y "cancelación". Estas acciones no se corresponden con ningún método "real" en mis modelos por una variedad de razones (lo más importante es que hay un sistema de back-end desacoplado en PHP que realiza parte de las acciones de compra y cancelación).
¿Dónde está el lugar correcto para colocar este código al usar RSpec? En pepino, podría escribir un par de pasos, pero no estoy seguro de cuál es el equivalente correcto para RSpec.
Puede colocar un monkeypatch en spec_helper.rb , o directamente en la parte superior del archivo de especificaciones si solo se usa para ese archivo.
Sería más claro y seguro hacer métodos auxiliares que usen métodos de clase existentes, en lugar de agrupar las clases.
Sugeriría hacer un nuevo archivo en spec/support
llamado purchase_helpers.rb
y poner este contenido en él:
module PurchaseHelpers
def purchase_widgets(user, count=1)
# Code goes here
end
def cancel_purchase(user, count=1)
# Code goes here
end
end
RSpec.configure do |c|
c.include PurchaseHelpers
end
La ventaja de hacer esto en lugar de incluirlo en spec/spec_helper.rb
es que no está spec/spec_helper.rb
ese archivo con un montón de código no relacionado con la configuración de RSpec. Separar las cosas es la mejor manera de hacer las cosas.