Ich muss testen, dass der Code eine neue Instanz einer Klasse mit bestimmten Parametern erstellt:
%Vor% Ich habe versucht, einen Alias-Mock zu erstellen und eine Erwartung für die __construct
-Methode festzulegen, aber es hat nicht funktioniert:
Diese Erwartung wird niemals erfüllt: Mockery\Exception\InvalidCountException: Method __construct(object(Mockery\Matcher\Type), 3) from Symfony\Component\Console\Helper\ProgressBar should be called exactly 1 times but called 0 times.
Weißt du irgendeinen anderen Weg, wie man das mit Mocker testen kann?
Nun, Sie können den Konstruktor nicht vortäuschen. Stattdessen müssen Sie Ihren Produktionscode geringfügig ändern. Wie ich aus der Beschreibung erraten kann, haben Sie so etwas:
%Vor% Was nicht der beste Code der Welt ist, weil wir Dependance haben. (Das ist völlig in Ordnung, wenn ProgressBar
beispielsweise Value Object ist).
Zuerst sollten Sie ProgressBar
getrennt von Foo
testen. Weil du dann Foo
testest, brauchst du nicht zu wissen, wie ProgressBar
funktioniert. Sie wissen, dass es funktioniert, Sie haben Tests dafür.
Aber wenn Sie es immer noch aus irgendeinem Grund testen wollen, gibt es zwei Möglichkeiten. Für beide Möglichkeiten müssen Sie new ProggresBar
Viel Spaß beim Testen!
Tags und Links unit-testing php mockery