Ausnahme: Serialisierung von „Closure“
In einem Unit-Testszenario sind Sie während der Testausführung auf eine Ausnahme gestoßen, die einen Abschluss innerhalb des _initMailer beinhaltet Verfahren. Diese Ausnahme bezieht sich auf die Serialisierung von Abschlüssen, die in der PHP-Testumgebung nicht zulässig ist.
Konkret wird Ihr Abschluss als Callback-Funktion innerhalb einer Zend_Mail_Transport_File-Instanz verwendet:
$callback = function() { return 'ZendMail_' . microtime(true) .'.tmp'; };
Lösung 1: Verwenden einer regulären Funktion
Eine Lösung besteht darin, den Abschluss durch eine reguläre Funktion zu ersetzen:
function emailCallback() { return 'ZendMail_' . microtime(true) . '.tmp'; } $callback = "emailCallback" ;
Lösung 2: Indirekter Methodenaufruf mithilfe eines Arrays Variable
Alternativ können Sie einen indirekten Methodenaufruf über eine Array-Variable verwenden:
$callback = array($this,"aMethodInYourClass");
Das bedeutet, dass die aMethodInYourClass-Methode aufgerufen wird, wenn der Rückruf aufgerufen wird.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit der Serialisierung von Abschlüssen in Unit-Testszenarien um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!