Tengo una situación extraña por la cual si ejecuto un archivo de especificación de modelo de rspec individual todos los ejemplos son verdes, si pruebo toda la carpeta de especificaciones/modelos, todos mis ejemplos son verdes. Si pruebo los controladores, todos pasan verde. Si pruebo todo el paquete (a través de la especificación rspec), entonces obtengo fallas: si elimino las pruebas del controlador, todo está completamente verde. Ahora estoy esperando que esto sea completamente autoinfligido, pero no puedo resolverlo.Probar todo el conjunto de Rspec falla
Lo he reducido a ejemplos específicos en las pruebas del controlador, lo que hace que fallen los ejemplos en las especificaciones del modelo.
por ejemplo. en un notes_controller_spec.rb si esta línea está presente
Note.any_instance.stubs(:valid?).returns(false)
que provoca un fallo en mis modelos/account_spec.rb
Failure/Error: @account.all_notes.should have(2).notes
ArgumentError:
comparison of Note with Note failed
./app/models/account.rb:293:in `sort'
donde la línea 293 es;
(self.notes + self.transactions.map(&:notes).flatten).sort {|a,b| a.created_at <=> b.created_at }
Estoy bastante seguro de que este va a ser uno de esos momentos de la palma de la cara, así que sea gentil conmigo!
'' puede ser created_at' las negativas para una de las notas, lo que significa que su bloque de tipo sería comparar las negativas '' contra un Fixnum', lo que provocaría que el bloque devuelva 'nil', lo que haría que el tipo explotara con el tipo de 'ArgumentError' que estás viendo.¿Estás seguro de que todas tus instancias se han guardado en la base de datos cuando se ejecuta esta línea? ¿Es posible que su base de datos no se vacíe antes de cada ejemplo? –
Tengo un problema similar. Tengo la sensación de que puede estar relacionado con [este problema rspec] (https://github.com/rspec/rspec-mocks/issues/54), aunque afirma que se ha corregido. –
lo siento, accidentalmente presioné enter, más detalles: Estoy copiando un método en cualquier instancia de un modelo, un modelo diferente al que estoy probando en el conjunto particular de pruebas. Cuando ejecuto un conjunto diferente de pruebas que requieren ese método, no se encuentra. Sacar el talón en las pruebas en un archivo hace que pase el otro archivo. Realmente molesto. He estado experimentando con la instalación de diferentes versiones de rspec. –