Cara Mengejek Kaedah Peribadi dalam PHPUnit
Masalah:
Dalam senario tertentu, menguji bahagian tertentu kelas boleh mencabar kerana kehadiran kaedah persendirian yang dipanggil secara dalaman. Bagaimanakah kita boleh stub keputusan kaedah peribadi untuk menguji kod yang diingini?
Jawapan:
Kepentingan API Awam:
Biasanya, apabila menguji kelas, anda disyorkan untuk memfokuskan pada API awamnya kerana ini mewakili kontrak yang ditawarkan oleh kelas anda. Kaedah peribadi dan dilindungi ialah butiran pelaksanaan dan tidak boleh menjejaskan kestabilan ujian anda.
Menguji Pengubahsuaian Keadaan Global:
Dalam sesetengah kes, kaedah peribadi mungkin mengandungi logik itu bergantung pada keadaan global, menjadikannya sukar untuk diuji. Untuk menangani perkara ini, pertimbangkan untuk memfaktorkan semula kod anda untuk menghapuskan keadaan global dan memperkenalkan kebergantungan yang boleh disuntik ke dalam kelas.
Menggunakan Rangka Kerja Mengejek untuk Kaedah Peribadi Mengejek:
Jika tidak dapat dielakkan untuk menguji kaedah persendirian secara langsung, PHPUnit menyediakan cara untuk mengejek kaedah persendirian menggunakan rangka kerja mengejeknya. Walau bagaimanapun, pendekatan ini secara amnya tidak digalakkan kerana ia memecahkan enkapsulasi dan boleh menyebabkan terlalu bergantung pada butiran pelaksanaan.
Untuk mengejek kaedah peribadi menggunakan PHPUnit, anda boleh mengikuti langkah berikut:
Petikan daripada "Pengujian Unit Pragmatik":
"Secara umumnya, anda tidak mahu memecahkan sebarang enkapsulasi demi ujian... Selalunya, anda sepatutnya dapat menguji kelas dengan menggunakan kaedah awamnya."
Atas ialah kandungan terperinci Bolehkah saya (Benar-benar) Mengejek Kaedah Peribadi dalam PHPUnit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!