Frage

Ich habe viele Artikel über Unit-Tests lesen. Die meisten Artikel gesagt, dass wir nicht mehr als ein Mock-Objekt in einem Test verwendet werden sollen, aber ich warum nicht verstehen kann. Manchmal brauchen wir wirklich mehr als ein Mock-Objekt in einem Test.

War es hilfreich?

Lösung

Sie sollten so viele Mocks wie nötig fügen Sie Ihre Klasse unter Test zu isolieren. Sie benötigen ein Modell für jede Abhängigkeit, die nicht Teil der Prüfung sein sollte.

Manchmal setzen Sie zwei oder drei Klassen zusammen in einem Test, der Einfachheit halber, weil sie so etwas wie eine Komponente bauen und sind stark gekoppelt. Alles andere sollte verspottet werden.

Ich weiß, die „best practice“ nur ein Mock zu haben und es auch nicht verstehen. In unserer Unit-Tests haben wir viele Mocks, einige Umwelt Mocks werden durch den Test-Framework aufgebaut schrieb ich (zB. TransactionService, Securityservice, SessionService). Es gibt nur eine Sache zu prüfen, wie Gishu bereits in seiner Antwort erwähnt, sind viele spottet ein Hinweis auf hohe Abhängigkeit. Es liegt an Ihnen zu berücksichtigen, wenn es zu viel ist. Wir haben viele kleine Schnittstellen, die viele Mocks in Tests erfordern.

Ihre Antwort wenden, sollten Sie nicht eine Abhängigkeit spotten, wenn:

  • Es ist ein sehr gekoppelt Teil der Klasse unter Test, wie eine innere Klasse, private Klasse etc.
  • Es ist eine gemeinsame .NET Framework-Klasse wie eine Sammlung und dergleichen
  • Sie möchten einen Integrationstest schreiben genau die Interaktion mit dieser Klasse zu testen. (Sie verspotten noch alles anderes, und Sie haben noch Unit-Tests für jede beteiligte Klasse in der Isolation.)
  • Es ist nur zu teuer, eine bestimmte Klasse zu verspotten. Seien Sie vorsichtig mit ihm als zu teuer entscheiden, scheinen Mocks schwer zu sein bis zu setzen, sondern sich als eine Brise zu sein im Vergleich zu den Wartbarkeit Probleme, die Sie bei der Verwendung von echten Klassen haben werden. Aber es gibt einige Frameworks und Technologien, die Umsetzung nicht gegen Schnittstellen und sind sehr schwer zu verspotten. Wenn es zu teuer ist dieses Framework-Klassen hinter eigene Schnittstelle zu setzen, müssen Sie mit ihnen in den Tests leben.

Andere Tipps

Sie können in einem Unit-Test mehr als einen Mock haben je nach Kontext.

Aber ich denke, was die Artikel 'an ist anspielend könnte

  • Prävention von Über spöttischen . Wenn ein Unit-Test alle Mitarbeiter verspottet aus, lassen Sie die Tür offen; Das Szenario könnte fehlschlagen, wenn Sie echte Mitarbeiter ersetzen. Durch die Minimierung der Anzahl von Mocks und mit echten Mitarbeitern so weit wie möglich / möglich, minimieren Sie das Risiko.
  • Hohe Kopplung Benachrichtigungen. Wenn Sie sich viele Mitarbeiter verspotten finden mit Inorder einen Komponententest zu schreiben, es könnte ein Design Geruch sein, das anzeigt, dass Sie hohe Kopplungs haben

Ich bin mir nicht sicher, welcher Artikel Sie sich beziehen, aber ich habe in der Regel ein Mock-Objekt pro Abhängigkeit für die Klasse unter Test.

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