Laden...

Mock- und Fake-Objekte: Macht ihr in eurem persönlichen Sprachgebrauch einen Unterschied dazwischen?

Erstellt von herbivore vor 11 Jahren Letzter Beitrag vor 11 Jahren 3.068 Views
herbivore Themenstarter:in
49.485 Beiträge seit 2005
vor 11 Jahren
Mock- und Fake-Objekte: Macht ihr in eurem persönlichen Sprachgebrauch einen Unterschied dazwischen?

Hallo Community,

heute bin ich auf folgende Aussage in der englischen Wikipedia (Mock object) gestoßen:

Mocks, fakes and stubs

Some authors draw a distinction between fake and mock objects. Fakes are the simpler of the two, simply implementing the same interface as the object that they represent and returning pre-arranged responses. Thus a fake object merely provides a set of method stubs.

In the book "The Art of Unit Testing" mocks are described as a fake object that helps decide if a test failed or passed, by verifying if an interaction on an object occurred or not. Everything else is defined as a stub. In that book, "Fakes" are anything that is not real. Based on their usage, they are either stubs or mocks.

Mock objects in this sense do a little more: their method implementations contain assertions of their own. This means that a true mock, in this sense, will examine the context of each call— perhaps checking the order in which its methods are called, perhaps performing tests on the data passed into the method calls as arguments.

Bisher hatte ich von diesem Unterschied noch nichts gehört. Er findet sich auch nicht in der deutschen Wikipedia (Mock-Objekt). Ich habe bisher Mock- und Fake-Objekte synoym verwendet. Daher meine Frage:

Macht ihr in eurem persönlichen Sprachgebrauch einen Unterschied zwischen Mock- und Fake-Objekten?

Die Umfrage läuft eine Woche. Ihr könnt gerne auch eine Antwort schreiben und eure Abstimmung näher erklären, insbesondere wenn ihr einen anderen Unterschied zwischen den Begriffen macht.

herbivore

4.941 Beiträge seit 2008
vor 11 Jahren

Hallo herbivore,

ja, ich kenne zwar (in etwa) den Unterschied zwischen den drei Begriffen (mock, fake, stub), verwende selber aber fast nur Mock.
Ich weiß aber, daß die Tester bei uns im Haus eine genauere Unterscheidung hier vornehmen, da sie u.a. darüber die Testtiefe definieren.

799 Beiträge seit 2007
vor 11 Jahren

Nach der obigen Definition, frage ich mich wo der Unterschied zwischen einem Stub und einem Fake liegt? Oder ist Fake der Überbegriff der je nach Implementierung in Stubs und Mocks zerfällt? 🤔

Ich habe ehrlich gesagt Fake noch nie im Zusammenhang mit Testen gehört.

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
E
395 Beiträge seit 2007
vor 11 Jahren

Ich habe ehrlich gesagt Fake noch nie im Zusammenhang mit Testen gehört.

nicht mal im bezug auf"das ergebnis faken"? 😛

MfG Paul

herbivore Themenstarter:in
49.485 Beiträge seit 2005
vor 11 Jahren

Hallo der-schlingel,

Oder ist Fake der Überbegriff der je nach Implementierung in Stubs und Mocks zerfällt?

genau so soll es laut Wikipedia in dem Buch "The Art of Unit Testing" unterschieden sein.

Ich selbst kannte den Unterschied vorher auch nicht und wenn man sich das Zwischenergebnis der Umfrage ansieht, steht es 12:3 für die, die den Unterschied ebenfalls nicht kanten oder zumindest nicht machen. Wenn man die dazurechnet, die Mock- und Fake-Objekte gar nicht kennen, sogar 19:3.

Darauf, dass es überhaupt einen Unterschied geben könnte, bin ich bei der Lektüre des Buches "Effektives Arbeiten mit Legacy Code" gestoßen. Dort wird Fake-Objekt sowohl als Oberbegriff als auch - je nach Kontext - für einfache Fake-Objekte verwendet (also das was "The Art of Unit Testing" Stubs nennt) und Mock-Objekt als Unterbegriff für Fake-Objekte, die Verifikationsunterstützung mitbringen.

Daraufhin habe ich dann bei Wikipedia geschaut, um zu sehen, ob diese Trennung auftaucht ist. Und letztlich eben diese Umfrage erstellt, um zu schauen, wie es in der Praxis aussieht.

herbivore

67 Beiträge seit 2011
vor 11 Jahren

Den Begriff Fake benutze ich nie. Die Unterscheidung zwischen Stub und Mock war mir bekannt und ich verwende die beiden Begriffe auch in der Praxis, da das durchaus sinnvoll ist. (Schließlich tun beide ganz verschiedene Dinge) Die meisten Mocking-Frameworks unterscheiden da aber imho nicht - da ist alles ein Mock.