/ / Cómo simular / duplicar el siguiente método en mi prueba rspec: Ruby-on-Rails, Ruby

Cómo simular / duplicar el siguiente método en mi prueba de rspec: ruby-on-rails, ruby

Tengo un método que hace aproximadamente lo siguiente:

def some_method(....)

user = User.where("....").first

if !user.nil?

if ..
user.delete
elsif
user.update_attributes(...)

else
new_user = User.new(...)
new_user.save!
end

end

Hay un montón de ramificaciones, así que tendré que crear algunas pruebas para cada caso.

¿Cómo puedo crear objetos simulados para asegurarme de que se llaman métodos específicos?

¿Cómo puedo diferenciar entre los diversos objetos en mi prueba?

p.ej.

user = User.where("....")

y

new_user = User.new("...")
new_user.save!

Tengo que probar de alguna manera una llamada a dónde, ydevuelve a veces nil y otras veces un objeto de usuario. Y tengo que probar si guardar! Se llama y devuelve verdadero. Y también probar para eliminar en un objeto específico (el de la cláusula where).

Respuestas

1 para la respuesta № 1

Puede apilar métodos de clase con RSpec, por ejemplo,

User.should_receive(:where).and_return([])