Mam to w swoim teście
Project.should_receive(:find).with(@project).and_return(@project)
ale kiedy obiekt otrzyma wywołanie tej metody dwa razy, muszę to zrobić
Project.should_receive(:find).with(@project).and_return(@project)
Project.should_receive(:find).with(@project).and_return(@project)
Czy jest jakiś sposób, jak powiedzieć coś takiego
Project.should_receive(:find).with(@project).and_return(@project).times(2)
ruby-on-rails
rspec
Jakub Arnold
źródło
źródło
any_instance
?Nowa
expect
składnia rspec będzie wyglądać następująco:2 razy:
dokładnie n razy:
co najmniej n razy:
źródło
have_received
Składnia działa również.expect(Project).to have_received(:find).exactly(n).times
itd.@JaredBeck wskazał. Rozwiązanie nie zadziałało dla mnie na
any_instance
wezwanie.W każdym razie skończyło się na używaniu stub zamiast should_receive.
To zadziała dla każdego nie. jednak razy.
źródło
should_receive
, w przeciwieństwie doany_instance
, oczekuje, że klasa otrzyma wiadomość określoną liczbę razy.any_instance
z drugiej strony jest zwykle używany do odgrywania metody.Tak więc pierwszy przypadek to oczekiwanie, które chcielibyśmy przetestować, podczas gdy drugi to przejście metody do następnej linii, abyśmy mogli przejść dalej.
źródło