1373 Stimmen

Was ist der Unterschied zwischen einer Attrappe und einem Stummel?

Ich habe verschiedene Artikel über Mocking vs Stubbing in Tests gelesen, einschließlich Martin Fowlers Spötteleien sind keine Spötteleien aber ich verstehe den Unterschied immer noch nicht.

179voto

b4da Punkte 2922

Stubs lassen Ihre Tests nicht scheitern, Mocks schon.

129voto

O'Rooney Punkte 2131

Nach der Lektüre all der obigen Ausführungen möchte ich versuchen, mich kurz zu fassen:

  • Stummel : ein Dummy-Code, der den Test ablaufen lässt, aber es ist Ihnen egal, was mit ihm passiert.
  • Mock : ein Dummy-Code, von dem Sie als Teil des Tests VERIFIZIEREN, dass er korrekt aufgerufen wird.
  • Spionage : ein Dummy-Code, der einige Aufrufe eines echten Codes abfängt, so dass Sie die Aufrufe überprüfen können, ohne das gesamte Originalobjekt zu ersetzen.

95voto

Ghini Antonio Punkte 2639

Ich denke, die einfachste und klarste Antwort auf diese Frage wird gegeben von Roy Osherove in seinem Buch Die Kunst des Unit-Tests (Seite 85)

Der einfachste Weg, um zu erkennen, dass es sich um einen Stub handelt, ist die Tatsache, dass der Stub den Test niemals nicht bestehen kann. Die Asserts, die der Test verwendet, richten sich immer gegen die getestete Klasse.

Andererseits wird der Test ein Mock-Objekt verwenden, um zu überprüfen, ob die Test fehlgeschlagen ist oder nicht. [...]

Auch hier ist das Mock-Objekt das Objekt, das wir verwenden, um zu sehen, ob der Test fehlgeschlagen ist oder nicht.

Stub und Mock sind beide gefälscht.

Wenn Sie Behauptungen gegen die Fälschung machen, bedeutet dies, dass Sie die Fälschung als Mock verwenden, wenn Sie die Fälschung nur verwenden, um den Test ohne Behauptung über sie laufen zu lassen, verwenden Sie die Fälschung als Stub.

38voto

NebulaFox Punkte 6907

Ein Mock testet lediglich das Verhalten und stellt sicher, dass bestimmte Methoden aufgerufen werden. Ein Stub ist eine testbare Version (per se) eines bestimmten Objekts.

Was meinen Sie mit einem Apple-Weg?

29voto

happygilmore Punkte 2878

Wenn Sie es mit der Fehlersuche vergleichen:

Stummel ist wie die Sicherstellung, dass eine Methode den richtigen Wert zurückgibt

Mock ist wie eigentlich Einsteigen in die Methode und vergewissern Sie sich, dass alles darin korrekt ist, bevor Sie den richtigen Wert zurückgeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X