Rumah > pembangunan bahagian belakang > tutorial php > Bolehkah saya (Benar-benar) Mengejek Kaedah Peribadi dalam PHPUnit?

Bolehkah saya (Benar-benar) Mengejek Kaedah Peribadi dalam PHPUnit?

Susan Sarandon
Lepaskan: 2024-10-29 10:17:30
asal
709 orang telah melayarinya

Can I (Really) Mock Private Methods in PHPUnit?

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:

  1. Buat olok-olok kelas menggunakan $testMe = $this->getMock("a", array("c"));
  2. Sediakan tingkah laku yang diharapkan menggunakan expects() dan method() kaedah.
  3. Laksanakan ujian anda terhadap kelas yang dipermainkan.

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan