2017-02-24 5 views
1

Ist es möglich, in phpunit Spott zu vermeiden?Ist es möglich, gute Tests zu schreiben, die Spott zu vermeiden, und "erwartet" mit herkömmlichen Methoden?

Mein Konzept ist: - Schreibeinheit Tests kleinere Teile zu testen - wenn es eine Integration/Funktionstest tun kommt, dann ist es möglich, eine Null-Objekt-Klasse mit der Dependency Injection zu injizieren (so ist es gut, alles zu haben, Schnittstelle). Integrationstests können jedoch von Komponententests getrennt werden.

Der Grund, warum ich das Spott nicht mag, ist, dass ich sehe, dass es in jedem Test zu wenig genutzt wird, es ist völlig nicht lesbar. Ich dachte über Trennung bei Komponententests und Integrationstests nach.

Könnte das in den meisten Fällen eine Alternative zum Spott sein, oder ist das Spotten überhaupt nicht ersetzbar? Was ist die beste Praxis?

Antwort

0

Natürlich müssen Sie keine Mocks verwenden. Sie benötigen fakes

eine Fälschung verhindert einen Test für einen sehr invasiven Vertrag, wie der Reihenfolge der Anrufe und genauer Parameter overspecifying; Eine echte Implementierung ist robuster zu Änderungen im Vertrag.

Dies hilft, sich auf das Wesentliche Ihres Tests bei der Fokussierung (weil Sie nicht lange Mocks Erwartungen in Ihren Tests setzen Sie). Es ist auch möglich, Mocks zu ersetzen.

Betrachten Sie das Beispiel in this article.

Verwandte Themen