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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top