Wie erwartete Rückgabewerte angeben?
-
08-10-2019 - |
Frage
Ich bin neu in RSpec und wie ich einen spec Test schreiben stieß ich auf ein Problem, wo die spec Tests vorbei sind, auch wenn die Rückgabewerte unterschiedlich sind als das, was ich in meinen Erwartungen angegeben. Zum Beispiel:
@q= Query.new
@q.should_receive(:number_to_name).with(0).and_return("no such boro")
@q.number_to_name(0)
Das passiert, obwohl die Query.number_to_name einen anderen Wert zurückkehrt, wenn ich es so nenne mit 0 Ich verstehe nicht, was daraus zu machen.
Lösung
should_receive
ist Teil rspec spöttischen Werkzeuge.
@q.should_receive(:number_to_name).with(0).and_return("no such boro")
Sie spotten number_to_name
auf @q
, eine Erwartung einstellen, dass number_to_name
wird mit dem Argument 0
und dass das Mock "no such boro"
zurückkehren aufgerufen werden. Die Ausführung @q.number_to_name(0)
dann erfüllt diese Erwartung durch die Pseudo-Aufruf. Ihre Implementierung von number_to_name
aufgerufen nie und wird nicht geprüft zu werden.