Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengendalikan Serialisasi Penutupan dalam Senario Pengujian Unit?

Bagaimana untuk Mengendalikan Serialisasi Penutupan dalam Senario Pengujian Unit?

Barbara Streisand
Barbara Streisandasal
2024-10-24 04:10:02722semak imbas

How to Handle Serialization of Closures in Unit Testing Scenarios?

Pengecualian: Pensirian 'Penutupan'

Dalam senario ujian unit, anda menghadapi pengecualian semasa pelaksanaan ujian yang melibatkan penutupan di dalam _initMailer kaedah. Pengecualian ini berkaitan dengan siri penutupan, yang tidak dibenarkan dalam persekitaran ujian PHP.

Secara khusus, penutupan anda digunakan sebagai fungsi panggil balik dalam contoh Zend_Mail_Transport_File:

$callback = function()
{
    return 'ZendMail_' . microtime(true) .'.tmp';
};

Penyelesaian 1: Menggunakan Fungsi Biasa

Satu penyelesaian ialah menggantikan penutupan dengan fungsi biasa:

function emailCallback() {
    return 'ZendMail_' . microtime(true) . '.tmp';
}
$callback = "emailCallback" ;

Penyelesaian 2: Panggilan Kaedah Tidak Langsung Menggunakan Array Pembolehubah

Sebagai alternatif, anda boleh menggunakan panggilan kaedah tidak langsung melalui pembolehubah tatasusunan:

$callback = array($this,"aMethodInYourClass");

Ini bermakna kaedah aMethodInYourClass akan digunakan apabila panggilan balik dipanggil.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Serialisasi Penutupan dalam Senario Pengujian Unit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn