Alat untuk Pengujian Unit di Magento

23

Apa yang Anda gunakan untuk Pengujian Unit di Magento? Atau apa yang Anda ketahui tentang Unit Testing dan Magento? Apakah Anda melakukan TDD atau hanya ingin memiliki cakupan uji unit untuk komponen proyek Anda, Anda memerlukan beberapa alat untuk melakukan ini.

Pendekatan dasar pertama adalah menggunakan phpunit biasa, tetapi ada beberapa hal yang membutuhkan tipuan tambahan untuk membuat Magento "dapat diuji".

Segala sesuatu yang saya kerjakan terkait dengan phpunit:

Apakah ada opsi lain?

FlorinelChis
sumber

Jawaban:

14

Lihat PHPSpec dengan MageSpec jika Anda menginginkan sesuatu yang tidak didasarkan pada PHPUnit, tetapi dengan beberapa Magento Integration. Ini bisa digunakan, tetapi tidak hanya cukup siap untuk prime time. Untuk mengejek PHPSpec 2 menggunakan Prophecy (yang hebat), tetapi tidak suka pengambil sihir dan penyetel sama sekali. Untuk alasan itu lebih baik menggunakan Mockery sebagai gantinya, yang berfungsi dengan baik (dan saya juga sangat menyukainya).

Lalu ada juga Behat dengan BehatMage untuk BDD dengan Magento. Layak dilihat, tetapi gagal misalnya jika Anda ingin menguji tampilan toko yang berbeda pada domain yang berbeda.

Ada juga ekstensi untuk BehatMage yang disebut MageBehat (penamaan mengerikan!), Yang keluar dari hackathon. Ini memberikan banyak tindakan khusus Magento ke BehatMage, tetapi jujur, beberapa solusi yang digunakan lebih merupakan peretasan daripada solusi nyata untuk masalah yang mendasarinya. Masih bisa digunakan.

Saya berharap untuk melihat kedua proyek - MageSpec dan BehatMage - berkembang di masa depan.

Vinai
sumber
Vinai terima kasih atas balasan Anda. Saya tahu tentang BehatMage dan pekerjaan yang dilakukan oleh tim di Inviqa / Session Digital (tidak jelas bagi saya struktur perusahaan mereka) ... Saya hanya mencari hal-hal phpunit, Behat / BehatMage itu tidak begitu menarik bagi saya, saya bermain dengan MageSpec beberapa waktu lalu.
FlorinelChis
Bahasa Inggris bukan bahasa ibu saya, detail yang saya berikan bisa lebih jelas. Saya sedang melakukan riset untuk Kelompok Pengguna London Magento - Rapat Desember.
FlorinelChis
4

PHPUnit adalah yang digunakan Magento 2. Berikut ini contoh file di GitHub. https://github.com/magento/magento2/blob/master/dev/tests/unit/testsuite/Magento/Captcha/Helper/DataTest.php . (Saya mengambil file itu secara acak.) Anda mungkin ingin melihat sekilas pendekatan tes Magento 2 sehingga apa pun yang Anda lakukan sekarang kompatibel dengan Magento 2 saat dirilis.

Alan Kent
sumber
Saya tidak berpikir OP berbicara tentang Magneto 2 di sini.
Marius
3

Anda harus menggunakan EcomDev PHPUnit .

Saya pribadi percaya bahwa semua pengembang Magento harus berusaha keras untuk solusi pengujian unit yang konsisten. EcomDev menyediakan kerangka kerja yang paling umum digunakan dan paling matang ini sehingga Anda sudah memiliki kumpulan pengembang yang layak dengan pengalaman di dalamnya. Menggunakan satu kerangka kerja juga mengurangi kebutuhan untuk menginstal bajillion kerangka kerja yang berbeda.

EcomDev PHPUnit memang memiliki konvensi aneh menempatkan tes langsung bersama kode produksi Untungnya, ini mudah diatasi dengan memodifikasi beberapa baris kode. EcomDev juga mengambil waktu manis mereka dengan pembaruan (meskipun repo Github mereka menunjukkan tanda-tanda aktivitas sehingga mereka jelas masih hidup).

Phan Thailand
sumber
Jadi, dengan mengatakan semua itu, apakah ada repo di suatu tempat yang memiliki serangkaian tes unit yang ditentukan (menggunakan ecomdev_unittest) yang menguji fungsionalitas inti? (Saya tahu MTAF melakukan ini, tetapi apakah ada unit test yang sudah ditentukan sebelumnya di suatu tempat?)
ProxiBlue
1
@ ProxiBlue Tidak, tidak ada yang saya sadari. Namun itu ide yang cukup bagus untuk proyek komunitas.
Phan Thailand
2

Untuk pengujian unit, EcomDev PHPUnit adalah yang terbaik.

Mungkin Anda ingin mencoba pengujian fonctionnal di Magento? Contoh dengan casperjs: https://github.com/jacquesbh/hackathon-casperjs/

Jacques Bodin-Hullin
sumber
1
ada pertanyaan berbeda tentang ini.
FlorinelChis