Eu tenho isso no meu teste
Project.should_receive(:find).with(@project).and_return(@project)
mas quando o objeto recebe aquela chamada de método duas vezes, eu tenho que fazer
Project.should_receive(:find).with(@project).and_return(@project)
Project.should_receive(:find).with(@project).and_return(@project)
Existe alguma maneira de dizer algo como
Project.should_receive(:find).with(@project).and_return(@project).times(2)
ruby-on-rails
rspec
Jakub Arnold
fonte
fonte
any_instance
?A nova
expect
sintaxe de rspec será semelhante a esta:por 2 vezes:
por exatamente n vezes:
por pelo menos n vezes:
fonte
have_received
sintaxe também funciona.expect(Project).to have_received(:find).exactly(n).times
etc.@JaredBeck apontou. A solução não funcionou para mim de
any_instance
plantão.Para qualquer instância, acabei usando stub em vez de should_receive.
Isso vai funcionar para qualquer não. muitas vezes.
fonte
should_receive
, ao contrárioany_instance
, espera que a classe receba a mensagem o número especificado de vezes.any_instance
por outro lado, geralmente é usado para esboçar um método.Portanto, o primeiro caso é uma expectativa que gostaríamos de testar, enquanto o segundo é passar de um método para a próxima linha para que possamos seguir em frente.
fonte