Sejauh ini untuk kebutuhan pengujian Magento 2 saya, saya telah menggunakan Unit PHP sebagai (kurang lebih) penguji penerimaan - hasil pengujian server dan permintaan HTML yang dibuat menjadi sistem dengan modul saya terinstal. Saya ingin dapat membuat tes integrasi saya sendiri. Apakah alat pengujian yang dikirimkan bersama Magento 2 memungkinkan pengembang pihak ketiga untuk membuat tes integrasi mereka sendiri yang memanfaatkan kode kerangka uji Magento? Atau apakah kita semua akan menggulung bootstrap kita sendiri?
Itu adalah
- Saya adalah pengembang Magento
- Saya ingin membuat tes integrasi
- Saya ingin tes integrasi saya untuk memiliki lingkungan Magento yang sepenuhnya bootstrap untuk dimainkan (yaitu manajer objek dan / atau injeksi ketergantungan untuk digunakan)
- Saya ingin tes integrasi saya memperpanjang
Magento\TestFramework\TestCase\AbstractController
tes jadi saya memiliki pembantu yang sama dengan tes Magento - Saya ingin dapat menjalankan tes secara terpisah dari sisa test suite (yaitu tidak harus menunggu 2 jam untuk menjalankan tes 15 detik saya)
- Saya ingin tes saya disimpan secara terpisah dari tes Magento
Situs dev docs memiliki beberapa artikel pemula tentang pengujian, tetapi mereka tampaknya berorientasi menjalankan tes yang dikirimkan bersama Magento dan tidak membuat dan menjalankan tes Anda sendiri. Ada modul sampel lama , tetapi semuanya memperluas PHPUnit_Framework_TestCase
kelas dan tampaknya merupakan unit test (yaitu kode pengujian yang tidak bergantung pada kerangka kerja Magento)
Apakah ada cara yang disediakan Magento untuk melakukan ini?
Jika tidak, adakah orang yang memasang pengaturan mereka sendiri sedemikian rupa sehingga pengujian komunitas pengembang Magento dapat mengadopsinya sebagai standar?
sumber
__DIR__
harus diikuti dengan garis miring (/_files
). Kedua, fixture dimuat dari dalam TestFramework sehingga__DIR__
sebenarnya menunjuk ke direktori TestFramework dan bukan modul Anda sendiri. TheComponentRegistrar
dapat digunakan untuk ini:require $ObjectManager::getInstance()->get(ComponentRegistrar::class)->getPath('module', 'Foo_Bar').'/Test/Integration/_files/example.php';
Saya telah bermain sedikit dengan tes integrasi, dan inilah yang saya temukan sejauh ini.
Pada dasarnya, saya telah mengikuti langkah-langkah serupa dengan apa yang dikatakan Fooman, dengan beberapa perbedaan untuk menjadikan tes integrasi menjadi bagian dari modul saya.
Ini adalah langkah-langkah yang saya ikuti:
1- Tempatkan tes integrasi Anda di bawah
app/code/Vendor/CustomModule/Test/Integration
2- Salin
dev/tests/integration/phpunit.dist.xml
kedev/tests/integration/phpunit.xml
dan ganti
dengan
3 - Kemudian saya menjalankannya menggunakan alat CLI
bin/magento dev:test:run integration
Anda harus mengingat apa yang dikatakan Fooman tentang "TESTS_CLEANUP" dan waktu yang diperlukan untuk menyiapkan tes integrasi jika Anda mengaktifkan pembersihan.
Di sini saya menambahkan contoh fungsional untuk referensi lebih lanjut. Anda akan melihat bagaimana Anda dapat mengakses manajer objek, dan membuat instance kelas Magento, serta menggunakan perlengkapan Magento.
app / code / Vendor / CustomModule / Controller / Order / Info.php
app / code / Vendor / CustomModule / etc / frontend / routes.xml
app / code / Vendor / CustomModule / etc / module.xml
app / code / Vendor / CustomModule / Test / Integration / Controller / Order / InfoTest.php
app / code / Vendor / CustomModule / registration.php
sumber