Kann die RSpec-Stub-Methode verschiedene Werte nacheinander ausgeben?

Ich habe eine Modell-Familie mit einer Methode location verschmilzt die location Ausgaben der anderen Objekte, die Mitglieder. (Die Mitglieder sind im Zusammenhang mit den Familien, aber das ist hier nicht wichtig.)

Beispielsweise gegeben

  • member_1 hat location == 'San Diego (Reisen, gibt 15 Mai)'
  • member_2 hat location == 'San Diego'

Familie.Standort zurückkehren könnte 'San Diego (member_1 Reisen, gibt 15 Mai)" Die Einzelheiten sind unwichtig.

Zur Vereinfachung der Prüfung von Familie.Lage-ich will stub-Mitglied.Lage. Allerdings brauche ich Sie, um zurückzukehren, zwei verschiedenen (genannten) Werte wie im obigen Beispiel. Im Idealfall würden diese basiert auf einem Attribut von membersondern einfach die Rückgabe unterschiedlicher Werte in eine Reihenfolge wäre OK. Gibt es eine Möglichkeit, dies zu tun in RSpec?

Ist es möglich, das überschreiben der Mitglied.Speicherort-Methode innerhalb der einzelnen test-Beispiel, wie

it "when residence is the same" do 
  class Member
    def location
      return {:residence=>'Home', :work=>'his_work'} if self.male?
      return {:residence=>'Home', :work=>'her_work'}
    end
  end
  @family.location[:residence].should == 'Home'
end

aber ich bezweifle, dass dies ist eine gute Praxis. In jedem Fall, wenn RSpec ausgeführt wird, eine Reihe von Beispielen ist es nicht die Wiederherstellung der ursprünglichen Klasse, also diese Art von überschreiben "Gifte" die nachfolgenden Beispiele.

So, ist es ein Weg, um ein gekürzte Methode zurück, andere, angegebene Werte bei jedem Aufruf?

InformationsquelleAutor der Frage Mike Blyth | 2011-05-10

Schreibe einen Kommentar