Tengo que argumentar en contra de la respuesta de Chris que son alternativas. Utilizo Shoulda y Rspec juntos en mi aplicación Rails, y se complementan entre sí.
Este combo me permite escribir pruebas concisas de una línea para elementos recurrentes, como asociaciones y validaciones, así como también tener el conjunto completo de rspec para especificaciones más complejas. Obtienes lo mejor de ambos mundos sin ningún conflicto.
Mira la Shoulda README que muestra cómo instalar al lado de Rspec. Incluso dice que proporciona "Test :: Unit- y RSEC-one-liners compatibles que prueban la funcionalidad común de Rails. De lo contrario, estas pruebas serían mucho más largas, más complejas y propensas a errores".
Editar (ejemplos):
En la parte superior de las especificaciones de mi, siempre me declaro mi relación de clase y validación de pruebas que son concisos y fáciles de leer.
describe Component do
context 'relationships' do
it { should belong_to(:technology)}
it { should have_many(:system_components) }
it { should have_and_belong_to_many(:variables) }
it { should have_many(:images).dependent(:destroy) }
it { should have_many(:documents).dependent(:destroy) }
end
context 'validations' do
it { should validate_presence_of(:make) }
it { should validate_presence_of(:model) }
it { should ensure_length_of(:name).is_at_most(100) }
it { should validate_presence_of(:technology_id) }
end
end
A continuación, el resto de mi especificación tendrá pruebas más complejas en las que estoy usando burla y talones de los cuales provienen de Rspec.
Estas son algunas de las perspectivas más en él: http://stackoverflow.com/questions/3604564/rspec-vs-shoulda –
Me amo algunos ejemplos de cosas que haces con el combo que no se podía hacer con una sola o el otro Si hay formas en que puedo limpiar mis exámenes, estoy totalmente de acuerdo. Estaba usando shoulda + matchy juntos, luego descubrí que rspec básicamente hizo eso y se fue de allí. ¿Es solo cosas como el controlador de los matchers? –
Actualicé mi respuesta con algunas de las pruebas que tengo. Una regla tiendo a seguir es que Shoulda se utiliza para Rieles construida en macros de clase como las validaciones y las relaciones, y Rspec es para las pruebas más complejas donde se requiere objetos simulados y stubbing método. –