ในรุ่นล่าสุดWP_UnitTestCase
ได้รวม$factory
คุณสมบัติ
ตัวอย่างเช่น:
$post = $this->factory->post->create();
ฉันจะหาเอกสารเกี่ยวกับคุณสมบัติที่มีประโยชน์นี้ได้ที่ไหน
ในรุ่นล่าสุดWP_UnitTestCase
ได้รวม$factory
คุณสมบัติ
ตัวอย่างเช่น:
$post = $this->factory->post->create();
ฉันจะหาเอกสารเกี่ยวกับคุณสมบัติที่มีประโยชน์นี้ได้ที่ไหน
คำตอบ:
เท่าที่ฉันรู้ไม่มีเอกสารสำหรับมันในปัจจุบัน แหล่งที่มาอย่างเป็นทางการอยู่ที่นี่
ฉันยังได้เขียนบทช่วยสอนเกี่ยวกับการทดสอบหน่วยปลั๊กอิน WordPress ซึ่งให้รายละเอียดเกี่ยวกับคุณลักษณะนี้
ข้อดีอย่างหนึ่งของการใช้
WP_UnitTestCase
คือโรงงาน สิ่งเหล่านี้สามารถเข้าถึงได้ผ่านfactory
ตัวแปรสมาชิกfactory
เป็นวัตถุที่มีคุณสมบัติที่มีในแต่ละตัวอย่างของหนึ่งในชั้นเรียนที่กำหนดไว้ในincludes / factory.php พวกเขาทำอะไรคุณถาม พวกเขาทำให้ง่ายมากในการสร้างผู้ใช้โพสต์เงื่อนไข ฯลฯ ทุกที่ที่คุณต้องการในการทดสอบ ดังนั้นแทนที่จะทำสิ่งนี้:$args = array( /* A bunch of user data you had to make up */ ); wp_insert_user( $args );
คุณสามารถทำสิ่งนี้:
$user_id = $this->factory->user->create();
แต่เดี๋ยวก่อนมันจะดีขึ้นกว่าเดิม ถ้าคุณต้องการผู้ใช้จำนวนมาก (หรือโพสต์หรืออะไรก็ตาม) คุณสามารถสร้างพวกเขาเป็นกลุ่มเช่นนี้:
$user_ids = $this->factory->user->create_many( 25 );
นั่นจะสร้างผู้ใช้ 25 คนที่คุณสามารถใช้ในการทดสอบของคุณ
factory
มีคุณสมบัติดังต่อไปนี้ที่คุณสามารถใช้:
$post
$attachment
$comment
$user
$term
$category
$tag
$blog
พวกเขาทั้งหมดอาจถูกนำมาใช้ในลักษณะเดียวกับที่แสดงในตัวอย่างข้างต้นกับ
$user
โรงงาน ตัวอย่างเช่นคุณสามารถสร้างโพสต์เช่นนี้:
$this->factory->post->create();
นอกจากนี้คุณยังสามารถระบุอาร์กิวเมนต์เฉพาะที่จะใช้สำหรับการสร้างวัตถุ ในตัวอย่างด้านบนเราสร้างโพสต์ แต่ไม่ได้กำหนดให้กับผู้ใช้เฉพาะ (
post_author
ฟิลด์จะเป็นค่าเริ่มต้น0
) บางครั้งเราอาจต้องการโพสต์มอบหมายให้ผู้ใช้แทน เราจะทำสิ่งนี้:$user_id = $this->factory->user->create(); $post_id = $this->factory->post->create( array( 'post_author' => $user_id ) );
นอกจากนี้หากคุณต้องการมากกว่า ID ของวัตถุที่คุณกำลังสร้างคุณไม่จำเป็นต้องทำสิ่งนี้:
$post_id = $this->factory->post->create(); $post = get_post( $post_id );
ใช้
create_and_get()
วิธีการแทน:// $post will be an instance of WP_Post $post = $this->factory->post->create_and_get();
ในตัวอย่างนี้เราใช้
post
โรงงาน แต่สิ่งนี้เป็นจริงสำหรับทุกโรงงาน
ฉันคิดว่าฉันจะพูดถึงเรื่องนี้กับทีมงานเอกสารของ WordPress บางทีเราสามารถนำสิ่งนี้ไปไว้ในปลั๊กอินและคู่มือชุดรูปแบบ
อัปเดต (20 มิถุนายน 2558):คุณสามารถสร้างโรงงานของคุณเอง !
อัปเดต (27 กันยายน 2559):ใน WordPress 4.4 การทดสอบได้รับการอัปเดตเพื่อให้factory()
วิธีการแบบคงที่สำหรับการเข้าถึงโรงงานแม้ว่าfactory
คุณสมบัติจะยังคงให้ผ่านทางผู้บุกรุกเวทมนตร์
รหัสแหล่งที่มา
https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php
ดูเหมือนจะเป็นสถานที่ที่ดีที่สุดในการดูช่วงเวลา