Heim >Backend-Entwicklung >PHP-Tutorial >Wie gehe ich mit der Serialisierung von Abschlüssen in Unit-Testszenarien um?

Wie gehe ich mit der Serialisierung von Abschlüssen in Unit-Testszenarien um?

Barbara Streisand
Barbara StreisandOriginal
2024-10-24 04:10:02876Durchsuche

How to Handle Serialization of Closures in Unit Testing Scenarios?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn