การเยาะเย้ยค่าส่งคืนของฟังก์ชัน/ตัวกรอง และอื่นๆ สำหรับการทดสอบ WordPress ด้วย PHPUnit
การเขียนการทดสอบด้วย WordPress เป็นเรื่องที่เจ็บปวด เนื่องจากการทดสอบหน่วย WordPress อย่างเป็นทางการแบบเก่านั้นต้องใช้ความพยายามอย่างมากสำหรับโปรเจ็กต์ที่กำหนดเอง และกรอบการทดสอบอื่นๆ พยายามที่จะเยาะเย้ย WordPress วิธีแก้ไขคือการมีแพ็คเกจการทดสอบการรวมที่ดีที่ ...
โดยรวมแล้วเป้าหมายคือ ความเรียบง่าย และ ไม่เสียเวลาเปล่าๆ (สำหรับฉันและคุณ)
ดาวน์โหลดหรือเพียงแค่
composer install --dev pretzlaw/wp-integration-test
นอกจาก PHP และ WordPress แล้ว เรายังไม่ต้องการอะไรมากนัก (ดู Packagist.org สำหรับรายละเอียดเพิ่มเติม):
หากคุณเริ่มต้นใหม่ตั้งแต่ต้นและยังไม่มีการบูตสแตรปปิ้ง คุณสามารถใช้การบูทสแตรปของเราได้ดังนี้:
< 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 >
ไม่ จำเป็นต้องใช้ bootstrap.php นี้ คุณสามารถสร้างไฟล์บูตสแตรปแบบกำหนดเองได้ตามใจชอบ เมื่อคุณต้องการทดสอบ CLI และผู้ดูแลระบบด้วย
หากคุณรู้จัก PHPUnit อยู่แล้ว การยืนยันและการเยาะเย้ยไม่ควรเป็นสิ่งใหม่ ด้วย WPInt มันสามารถใช้สำหรับการทดสอบ PHPUnit ส่วนใหญ่โดยเพิ่มหนึ่งลักษณะ:
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 ();
}
}
อย่างที่คุณเห็นด้านบน เรากำลังใช้ mockery/mockery:~1 ซึ่งง่ายต่อการใช้งานและบำรุงรักษา แต่ใช้ชื่อเมธอดที่แตกต่างกัน (เช่น shouldReceive
andReturn
ตามที่เห็นด้านบน)
wp_die()
คุณสามารถขอคุณสมบัติเพิ่มเติมหรือชี้ให้เห็นทางลัดทั่วไปเพิ่มเติมได้โดยการเปิดปัญหา
ลิขสิทธิ์ 2021 เพรทซลอว์ (rmp-up.de)
อนุญาตให้บุคคลใดก็ตามที่ได้รับสำเนาของซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") อนุญาตโดยไม่เสียค่าใช้จ่าย เพื่อจัดการกับซอฟต์แวร์โดยไม่มีข้อจำกัด รวมถึงแต่ไม่จำกัดเพียงสิทธิ์ในการใช้ คัดลอก ปรับเปลี่ยน ผสาน เผยแพร่ แจกจ่าย ให้อนุญาตช่วง และ/หรือขายสำเนาของซอฟต์แวร์ และอนุญาตให้บุคคลที่ได้รับซอฟต์แวร์นี้สามารถทำได้ ภายใต้เงื่อนไขต่อไปนี้:
ประกาศเกี่ยวกับลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์นี้มีให้ "ตามที่เป็น" โดยไม่มีการรับประกันใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ซึ่งรวมถึงแต่ไม่จำกัดเพียงการรับประกันความสามารถในการค้าขาย ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ และการไม่ละเมิด ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดต่อการเรียกร้องค่าเสียหายหรือความรับผิดอื่นใดไม่ว่าในการกระทำของสัญญาการละเมิดหรืออย่างอื่นที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือข้อตกลงอื่น ๆ ใน ซอฟต์แวร์.