Episode 17: oleh Toby Huang di San Francisco, CA (Januari 2021)
Episode sebelumnya
Pengujian browser merupakan bentuk pengujian otomatis untuk kode Chrome yang lebih menyeluruh dibandingkan pengujian unit. Pengujian browser membuat instance browser dan melakukan pengujian berbagai elemen UI alih-alih hanya menguji fungsionalitas input/output murni seperti yang dilakukan pengujian unit. Pengujian otomatis terintegrasi penting untuk simulasi pengalaman pengguna dari ujung ke ujung. Saat menulis pengujian {i>browser<i}, Anda sering kali ingin untuk melakukan tindakan penyiapan secara terprogram yang dapat dilakukan pengguna secara manual. Untuk membantu Anda melakukannya, mixin adalah rangkaian alat untuk mengerjakan tugas yang sulit penyiapan pengujian browser dengan cara yang dapat digunakan kembali.
Contoh mixin yang berguna:
GuestUserMixin
untuk menguji mode samaranUserPolicyMixin
untuk meniru kebijakan pengguna dari serverFakeGaiaMixin
untuk meniru respons dari server GAIA
Anda dapat membuat mixin kustom sendiri untuk memenuhi berbagai tujuan.
Cuplikan di bawah ini login sebagai pengguna tamu untuk pengujian Anda. Penting untuk pastikan fitur Anda berfungsi dalam mode samaran.
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest { private: GuestSessionMixin guest_session_mixin_{&mixin_host_}; };
LoggedInUserMixin
adalah cara yang mudah untuk login sebagai pengguna Family Link untuk
pengujian Anda. Jika fitur Anda memengaruhi segala
sesuatu yang berhubungan dengan pengawasan anak,
Anda harus menguji fitur Anda untuk pengguna yang diawasi. Kemungkinan bug adalah
lupa bahwa pengguna anak menonaktifkan mode samaran atau tidak dapat menginstal
ekstensi tanpa persetujuan orang tua. LoggedInUserMixin
adalah mixin gabungan
yang terdiri dari
campuran lainnya.
class MyChildBrowserTestClass : public MixinBasedInProcessBrowserTest { protected: void SetUpOnMainThread() override { MixinBasedInProcessBrowserTest::SetUpOnMainThread(); logged_in_user_mixin_.LogInUser(); } private: LoggedInUserMixin logged_in_user_mixin_{&mixin_host_, LoggedInUserMixin::LogInType::kChild, embedded_test_server(), this}; };
Salah satu manfaat utama mixin adalah menggunakan komposisi daripada
pewarisan, dan menghindari masalah terkait pewarisan multi-diamond.
Mewarisi lebih dari satu kelas dasar pengujian
menyebabkan masalah {i>diamond<i},
tetapi Anda dapat mencampur dan mencocokkan
campuran sambil menghindari masalah ini. Menggunakan mixin
tidak sepenuhnya menyingkirkan pewarisan karena kelas pengujian browser masih
harus mewarisi dari MixinBasedInProcessBrowserTest
, tetapi untungnya
bersifat umum dan ringan.