GU4RDI4N
10-12-2009, 12:31
hi,
folgende Situation:
ich soll eine Test-Methode (PHPUnit) für eine Methode schreiben,
die unter anderem auf "mail(...);" zugreift.
Wie kann ich nun innerhalb des Tests prüfen ob die Mail verschickt wurde?
Ich suche eine elegante Lösung,
also ich könnte natürlich auch in die Methode gehen und das mail() ersetzen,
aber das schreiben von Test's sollte doch keine Auswirkungen auf die
eigentlichen Systeme haben, oder?
Gibt es vielleicht eine Möglichkeit dem parser zu sagen statt dem
eigentlichen mail() eine andere, selbst definierte, funktion aufzurufen?
Oder das senden von mails mitzuverfolgen?
(was allerdings auch wieder recht dirty wäre,
da dann wieder externe Systeme im Spiel wären)
Normalerweise würde man für Test-Methoden einfach interfaces bzw. API's
simulieren, aber das ist hier ja nicht möglich, da "mail()" eben fest in PHP
eingebaut ist.
Wie würdet ihr solch eine Situation (möglichst elegant) angehen?
(Falls es für mail() eine Ausnahme-Lösung gibt, gilt die gleiche
Fragestellung auch für z.b.: Datenbankabstraktion wo mysql_query() benutzt
wird oder Kommunikation über Soap oder sonstige fest verschweisste
Funktionen die mit externen Quellen kommunizieren müssen.)
Danke für jede hilfreiche Antwort.
folgende Situation:
ich soll eine Test-Methode (PHPUnit) für eine Methode schreiben,
die unter anderem auf "mail(...);" zugreift.
Wie kann ich nun innerhalb des Tests prüfen ob die Mail verschickt wurde?
Ich suche eine elegante Lösung,
also ich könnte natürlich auch in die Methode gehen und das mail() ersetzen,
aber das schreiben von Test's sollte doch keine Auswirkungen auf die
eigentlichen Systeme haben, oder?
Gibt es vielleicht eine Möglichkeit dem parser zu sagen statt dem
eigentlichen mail() eine andere, selbst definierte, funktion aufzurufen?
Oder das senden von mails mitzuverfolgen?
(was allerdings auch wieder recht dirty wäre,
da dann wieder externe Systeme im Spiel wären)
Normalerweise würde man für Test-Methoden einfach interfaces bzw. API's
simulieren, aber das ist hier ja nicht möglich, da "mail()" eben fest in PHP
eingebaut ist.
Wie würdet ihr solch eine Situation (möglichst elegant) angehen?
(Falls es für mail() eine Ausnahme-Lösung gibt, gilt die gleiche
Fragestellung auch für z.b.: Datenbankabstraktion wo mysql_query() benutzt
wird oder Kommunikation über Soap oder sonstige fest verschweisste
Funktionen die mit externen Quellen kommunizieren müssen.)
Danke für jede hilfreiche Antwort.