Mengejek nilai kembalian fungsi/filter dan lainnya untuk menguji WordPress dengan PHPUnit.
Menulis tes dengan WordPress sangat merepotkan karena Tes Unit WordPress resmi yang sangat lama selalu memerlukan banyak pekerjaan untuk proyek khusus dan Kerangka Pengujian lainnya mencoba untuk mengejek WordPress. Solusinya adalah dengan memiliki paket pengujian integrasi yang bagus yang ...
Secara keseluruhan tujuannya adalah kesederhanaan dan tidak membuang-buang waktu (untuk saya dan Anda).
Unduh atau cukup
composer install --dev pretzlaw/wp-integration-test
Selain PHP dan WordPress kami tidak memerlukan banyak hal (lihat Packagist.org untuk lebih jelasnya):
Jika Anda memulai dari awal dan belum memiliki bootstrapping, Anda dapat menggunakan bootstrapping kami seperti ini:
< phpunit bootstrap = " vendor/Pretzlaw/WPInt/bootstrap.php " >
< testsuites >
< testsuite name = " default " >
<!-- CHANGE THIS TO WHERE YOUR PHPUNIT TEST CLASSES ARE -->
< directory >lib/tests</ directory >
</ testsuite >
</ testsuites >
</ phpunit >
Menggunakan bootstrap.php ini tidak wajib. Jangan ragu untuk membuat file bootstrapping khusus, ketika Anda perlu menguji CLI dan hal-hal admin juga.
Jika Anda sudah mengetahui PHPUnit, maka menegaskan dan mengejek bukanlah sesuatu yang baru. Dengan WPInt, sebagian besar Tes PHPUnit dapat dilakukan dengan menambahkan satu Sifat:
class FooTest extends PHPUnit Framework TestCase {
use Pretzlaw WPInt Traits WordPressTests;
function testBar () {
// Assertions (simple or with special constraints)
static :: assertActionHasCallback ( ' init ' , ' my_own_init ' );
static :: assertShortcodeHasCallback (
[ new IsInstanceOf ( MyOwn::class ), ' some_method ' ],
' my_shortcode '
);
// Mock posts or meta-data
$ this -> mockGetPost ( 1337 )-> andReturn ( / * your wp post mock */ );
$ this -> mockPostMeta ( ' some_key ' )-> andReturn ( ' Some value! ' ); // For all posts
$ this -> mockMetaData ( ' my-own-cpt ' , ' another_key ' , 1337 )-> andReturn ( ' ec ' ); // Just for ID 1337
// Mock actions, filter, cache, ...
$ this -> mockFilter ( ' user_has_cap ' )
-> andReturn ( true );
$ this -> mockCache ()
-> shouldReceive ( ' get ' )
-> with ( ' my_own_cache ' )
-> andReturn ( ' yeah ' );
// Or use one of several shortcuts and helper
$ this -> disableWpDie ();
}
}
Seperti yang Anda lihat di atas, kami menggunakan mockery/mockery:~1 yang lebih mudah digunakan dan dipelihara tetapi menggunakan nama metode yang berbeda (mis. shouldReceive
, andReturn
seperti yang terlihat di atas).
wp_die()
Jangan ragu untuk meminta fitur tambahan atau menunjukkan pintasan yang lebih umum dengan membuka suatu masalah.
Hak Cipta 2021 Pretzlaw (rmp-up.de)
Izin dengan ini diberikan, secara gratis, kepada siapa pun yang memperoleh salinan perangkat lunak ini dan file dokumentasi terkait ("Perangkat Lunak"), untuk menggunakan Perangkat Lunak tanpa batasan, termasuk tanpa batasan hak untuk menggunakan, menyalin, memodifikasi, menggabungkan , mempublikasikan, mendistribusikan, mensublisensikan, dan/atau menjual salinan Perangkat Lunak, dan mengizinkan orang yang menerima Perangkat Lunak untuk melakukan hal tersebut, dengan tunduk pada ketentuan berikut:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini akan disertakan dalam semua salinan atau sebagian besar Perangkat Lunak.
PERANGKAT LUNAK INI DISEDIAKAN "APA ADANYA", TANPA JAMINAN APA PUN, TERSURAT MAUPUN TERSIRAT, TERMASUK NAMUN TIDAK TERBATAS PADA JAMINAN KELAYAKAN UNTUK DIPERDAGANGKAN, KESESUAIAN UNTUK TUJUAN TERTENTU, DAN TIDAK ADA PELANGGARAN. DALAM KEADAAN APA PUN PENULIS ATAU PEMEGANG HAK CIPTA TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN, ATAU TANGGUNG JAWAB LAINNYA, BAIK DALAM TINDAKAN KONTRAK, HUKUM ATAU LAINNYA, YANG TIMBUL DARI, ATAU SEHUBUNGAN DENGAN PERANGKAT LUNAK ATAU PENGGUNAAN ATAU HAL-HAL LAIN DALAM PERANGKAT LUNAK.