Ich kann die Mail-Fassade anscheinend nicht dazu bringen, einen ->with()
-Befehl zum Testen zu akzeptieren.
Das funktioniert:
%Vor%Aber das geht nicht:
%Vor%und das auch nicht:
%Vor%und das auch nicht:
%Vor%Alle geben den folgenden Fehler aus:
%Vor%Wie kann ich Mail testen, um zu prüfen, was es empfängt?
Auch - für Bonuspunkte - ist es möglich, zu testen, was Mail innerhalb der Schließung tut? d. h., kann ich überprüfen, auf was $message->to()
gesetzt ist?
edit: mein Mail-Code:
%Vor% Die folgenden Codebeispiele gehen von PHP 5.4 oder neuer aus - wenn Sie 5.3 verwenden, müssen Sie $self = $this
vor dem folgenden Code und use ($self)
bei der ersten Schließung hinzufügen und alle Referenzen auf $this
inside ersetzen die Schließung.
Der einfachste Weg besteht darin, die Swift_Mailer-Instanz nachzuahmen. Sie müssen nachlesen, welche Methoden in der Swift_Message-Klasse vorhanden sind, um den vollen Nutzen daraus ziehen zu können.
%Vor% Eine andere Möglichkeit, dies zu lösen, besteht darin, Assertionen für den Abschluss auszuführen, der an Mail::send
übergeben wurde. Das sieht nicht ganz sauber aus, und seine Fehlermeldungen können ziemlich kryptisch sein, aber es funktioniert, ist sehr flexibel und die Technik kann auch für andere Dinge verwendet werden.
In diesem Beispiel führe ich eine Assertion für die Daten aus, die an die Ansicht übergeben werden, und ich erhalte einen Fehler von Mockery, wenn die Empfängeradresse, der Betreff oder der Name der Ansicht falsch ist.
Mit Mockery::on()
können Sie einen Abschluss für einen Parameter einer mocked-Methode ausführen. Wenn es false zurückgibt, erhalten Sie die Fehlermeldung "Kein passender Handler gefunden", aber wir möchten Assertions ausführen, sodass wir nur true zurückgeben. Mockery::self()
ermöglicht die Verkettung von Methoden.
Wenn es Ihnen an irgendeinem Punkt egal ist, was ein bestimmter Parameter eines Methodenaufrufs ist, können Sie mit Mockery::any()
Mocker sagen, dass es alles akzeptiert.