Ich habe das in meinem Test
Project.should_receive(:find).with(@project).and_return(@project)
Aber wenn das Objekt diesen Methodenaufruf zweimal empfängt, muss ich das tun
Project.should_receive(:find).with(@project).and_return(@project)
Project.should_receive(:find).with(@project).and_return(@project)
Gibt es eine Möglichkeit, so etwas zu sagen?
Project.should_receive(:find).with(@project).and_return(@project).times(2)
ruby-on-rails
rspec
Jakub Arnold
quelle
quelle
any_instance
?Die neue
expect
Syntax von rspec sieht folgendermaßen aus:für 2 mal:
für genau n mal:
für mindestens n mal:
quelle
have_received
Syntax funktioniert auch.expect(Project).to have_received(:find).exactly(n).times
usw.@ JaredBeck wies darauf hin. Die Lösung hat bei mir auf
any_instance
Abruf nicht funktioniert .Für jeden Fall habe ich stub anstelle von should_receive verwendet.
Dies funktioniert für alle Nr. von Zeiten aber.
quelle
should_receive
any_instance
erwartet im Gegensatz zu , dass die Klasse die angegebene Anzahl von Malen empfängt.any_instance
Andererseits wird im Allgemeinen zum Stubben eines Verfahrens verwendet.Der erste Fall ist also eine Erwartung, die wir testen möchten, während der zweite eine Methode hinter sich lässt und zur nächsten Zeile übergeht, damit wir weitermachen können.
quelle