Saya mencoba untuk mengejek php
Apakah ada cara untuk mengatasi perilaku Karena Anda menyebutkan Anda tidak ingin menggunakan kerangka kerja lain, Anda hanya meninggalkan satu opsi: uopz uopz adalah ekstensi ilmu hitam dari genre runkit-and-scary-stuff, yang dimaksudkan untuk membantu infrastruktur QA. uopz_flags adalah fungsi yang dapat memodifikasi flag fungsi, metode, dan kelas.
Akan menghasilkan
Respons telat bagi seseorang yang mencari jawaban tiruan ajaran tertentu ini. Anda tidak dapat mengejek Doctrine\ORM\Query karena deklarasi "final", tetapi jika Anda melihat ke dalam kode kelas Query maka Anda akan melihat bahwa itu memperluas kelas AbstractQuery dan seharusnya tidak ada masalah mengejeknya.
Saya sarankan Anda untuk melihat kerangka pengujian ejekan yang memiliki solusi untuk situasi ini dijelaskan di halaman: Berurusan dengan Kelas/Metode Final :
Sebagai contoh, izin ini untuk melakukan hal seperti ini:
Saya tidak tahu apa yang perlu Anda lakukan tetapi, saya harap bantuan ini Saya menemukan masalah yang sama dengan
Kemudian dalam pengujian saya:
Cara yang lucu :) PHP7.1, PHPUnit 5.7
Saya telah menerapkan pendekatan @Vadym dan memperbaruinya. Sekarang saya menggunakannya untuk pengujian berhasil!
Ada perpustakaan kecil Bypass Finals tepatnya untuk tujuan tersebut. Dijelaskan secara rinci oleh posting blog . Yang harus Anda lakukan hanyalah mengaktifkan utilitas ini sebelum kelas dimuat:
Ketika Anda ingin mengejek kelas akhir, momen yang tepat untuk memanfaatkan Prinsip inversi ketergantungan :
Untuk mengejek artinya: Membuat abstraksi (antarmuka atau kelas abstrak) dan menetapkannya ke kelas akhir, dan mengejek abstraksi. |