Ich möchte eine Methode mit Mocha nur dann stubben, wenn ein bestimmter Parameterwert angegeben ist, und die ursprüngliche Methode aufrufen, wenn ein anderer Wert angegeben wird.
Wenn ich es so mache:
%Vor%Ich bekomme ein
%Vor%Ich weiß auch, dass ich beim Schreiben des Mocks ohne den'with'-Aufruf alle Parameter stubben und dann meinen spezifischen Spott geben kann. Aber dann muss ich den Rückgabewert für jeden Anruf kennen, was nicht der Fall ist: /
tldr; Gibt es eine Möglichkeit, die ursprüngliche Methode in einem Stub aufzurufen oder nur bestimmte Parameter zu stubben und die anderen zu belassen?
Die Antwort hängt davon ab, was genau Sie testen.
Einige Anmerkungen:
1) Ich vermeide immer die Verwendung von stubs.any_instance
. Sie können in Ihren Stubs / Mocks spezifisch sein, was falsche Testpositive verhindert.
2) Ich bevorzuge es, Spione zusammen mit Stubs zu verwenden, um aktiv zu behaupten, dass etwas aufgerufen wurde. Wir verwenden den bourne Edelstein für diesen Zweck. Die Alternative besteht darin, einen Schein zu verwenden, der implizit testet, ob etwas aufgerufen wird (z. B. wird es fehlschlagen, wenn es nicht aufgerufen wird.
)So könnte Ihre Klassenmethode ungefähr so aussehen (beachten Sie, das ist die RSpec-Syntax):
%Vor%Es gibt viele Stub / Spy-Beispiele hier .
Hoffe, das hilft.
Tags und Links ruby-on-rails mocha testunit