Supongamos que tiene un sitio de compras que vende widgets. Sin embargo, el inventario de cada widget es limitado, por lo que es importante mantener el número "widget.number_still_available" actualizado.Cuando se prueba con rspec, ¿dónde poner "métodos de utilidad de prueba" comunes?
me gustaría escribir una prueba rspec 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
que me gustaría ser capaz de escribir-sólo métodos de prueba que realiza la "compra" y "Cancelar" métodos. Estas acciones no corresponden a ningún método "real" en mis modelos por una variedad de razones (lo más significativo es que hay un sistema de backend desacoplado en PHP que realiza parte de las acciones de compra y cancelación).
¿Dónde está el lugar correcto para poner este código cuando se usa RSpec? En pepino, podría escribir un par de pasos, pero no estoy seguro de cuál es el equivalente correcto para RSpec.
Tenga en cuenta que también funciona con las clases de modelo de parche mono en este mismo archivo. Por lo tanto, si prefirió 'purchase_widgets' como un método de solo prueba en User, puede abrir la clase User en este archivo y agregarla. Además, para mayor conveniencia, si está probando con Spork, puede agregar 'load" # {Rails.root} /spec/support/purchase_helpers.rb "' dentro del bloque 'Spork.each_run' en spec_helper.rb. – cailinanne
Ese último bit solo es necesario si desea incluir los métodos 'PurchaseHelper' en el espacio de nombres de todas las especificaciones. Si desea hacerlo solo cuando sea necesario, puede llamar 'include PurchaseHelpers' en su bloque' describe'. –