So testen Sie Mail Facade in Laravel 4

8

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%     
Laurence 23.08.2013, 15:24
quelle

1 Antwort

24

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.

Verspottung SwiftMailer

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%

Behauptungen zu Schließungen

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.

%Vor%

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.

    
Andreas 25.08.2013, 16:36
quelle

Tags und Links