/ / Como burlar / dobrar o seguinte método no meu teste rspec - ruby-on-rails, ruby

Como duplicar / duplicar o seguinte método no meu teste rspec - ruby-on-rails, ruby

Eu tenho um método que faz aproximadamente o seguinte:

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

Há muitas ramificações, então terei que criar alguns testes para cada caso.

Como posso criar objetos simulados para garantir que métodos específicos sejam chamados?

Como posso diferenciar entre os vários objetos no meu teste?

por exemplo.

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

e

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

Eu tenho que de alguma forma testar uma chamada para onde, eretorno às vezes nulo e às vezes um objeto de usuário. E eu tenho que testar se salvar! é chamado e retorna verdadeiro. E também teste para exclusões em um objeto específico (aquele da cláusula where).

Respostas:

1 para resposta № 1

Você pode esboçar métodos de classe com RSpec, por ex.

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