Pengujian unit berfungsi baik dengan objek, terutama karena ia menyediakan banyak fitur mewah, seperti objek tiruan, yang membantu menciptakan pengujian yang lebih baik dengan lebih cepat.
Ini dikatakan, tidak ada yang melarang melakukan pengujian unit pada basis kode prosedural . Dalam OOP, sebagian besar unit test menguji metode dengan mengirimkan beberapa parameter kepada mereka dan mengharapkan hasil, atau pengecualian dari tipe tertentu. Ini dapat dilakukan sejauh dengan kode prosedural juga; Hanya saja, alih - alih metode pengujian, Anda akan menguji fungsi .
Perhatikan bahwa Anda harus:
Isolasikan fungsi yang harus Anda uji dan yang tidak perlu. Dalam OOP, ini mudah: metode pribadi tidak harus diuji karena penelepon tidak akan pernah dapat mengaksesnya secara langsung. Kemungkinannya, dalam kode prosedural Anda, beberapa fungsi seperti ini dan tidak perlu tes.
Pikirkan tentang ruang lingkup global . Masalahnya ada dalam OOP juga, tetapi jika Anda mengatakan bahwa Anda harus menguji kode spaghetti, kemungkinan orang-orang yang menulis kode ini memiliki kebiasaan buruk, seperti terlalu banyak menggunakan lingkup global, dan melakukan beberapa hal gila seperti mengubah $_GET
atau $_POST
mengatur array di dalam fungsi.
Menangani kode di luar fungsi. Ini adalah kasus yang lebih rumit, tetapi masih memungkinkan. Entah Anda require_once
halaman untuk melihat apa yang terjadi dan menangkap output melalui ob_start
/ob_get_clean
, atau Anda melakukan permintaan HTTP dari test suite dan menganalisis respons dengan mem-parsing HTML. Ini bukan pengujian UI: di sini, Anda tidak peduli apakah tombol pada halaman muncul di kiri atau di kanan atau jika tautan menggunakan huruf kapital merah besar atau biru kecil. Yang Anda pedulikan adalah menemukan beberapa elemen HTML melalui DOM dan membandingkan kontennya dengan yang diharapkan.
Uji kode respons . require_once
dengan buffering output yang baik, tetapi Anda juga harus menguji bagaimana aplikasi web menangani kesalahan. Misalnya, jika hasil tes yang diharapkan adalah 404 Tidak Ditemukan, Anda harus melakukan permintaan HTTP untuk mengetahui apa jawabannya.