Câu trả lời:
Theo tôi biết, hiện tại không có tài liệu nào cho nó. Nguồn chính thức là đây .
Tôi cũng đã viết một hướng dẫn về đơn vị thử nghiệm các plugin WordPress, cung cấp một số chi tiết về tính năng này .
Một trong những lợi thế của việc sử dụng
WP_UnitTestCase
là các nhà máy của nó. Đây có thể được truy cập thông qua cácfactory
biến thành viên. Đâyfactory
là một đối tượng với các thuộc tính là mỗi thể hiện của một trong các lớp được định nghĩa trong gồm / Factory.php . Họ làm gì, bạn hỏi? Họ làm cho nó rất đơn giản để tạo người dùng, bài đăng, điều khoản, vv, bất cứ nơi nào bạn cần họ trong thử nghiệm của bạn. Vì vậy, thay vì làm điều này:$args = array( /* A bunch of user data you had to make up */ ); wp_insert_user( $args );
Bạn chỉ có thể làm điều này:
$user_id = $this->factory->user->create();
Nhưng chờ đã, nó thậm chí còn trở nên tốt hơn. Điều gì nếu bạn cần nhiều người dùng (hoặc bài viết, hoặc bất cứ điều gì)? Bạn chỉ có thể tạo chúng với số lượng lớn như thế này:
$user_ids = $this->factory->user->create_many( 25 );
Điều đó sẽ tạo ra 25 người dùng mà bạn có thể sử dụng trong thử nghiệm của mình.
Có
factory
các thuộc tính sau mà bạn có thể sử dụng:
$post
$attachment
$comment
$user
$term
$category
$tag
$blog
Tất cả chúng có thể được sử dụng theo cách tương tự như thể hiện trong ví dụ trên với
$user
nhà máy. Ví dụ: bạn có thể tạo một bài đăng như thế này:
$this->factory->post->create();
Bạn cũng có thể chỉ định các đối số cụ thể để sử dụng để tạo đối tượng. Trong ví dụ trên, chúng tôi đã tạo một bài đăng, nhưng nó không được gán cho một người dùng cụ thể (
post_author
trường sẽ mặc định0
). Đôi khi chúng tôi có thể muốn bài đăng được gán cho người dùng thay thế. Chúng tôi sẽ làm như thế này:$user_id = $this->factory->user->create(); $post_id = $this->factory->post->create( array( 'post_author' => $user_id ) );
Ngoài ra, nếu bạn cần nhiều hơn chỉ ID của đối tượng bạn đang tạo, bạn không cần phải làm điều này:
$post_id = $this->factory->post->create(); $post = get_post( $post_id );
Thay vào đó, sử dụng
create_and_get()
phương pháp:// $post will be an instance of WP_Post $post = $this->factory->post->create_and_get();
Trong ví dụ này, chúng tôi đã sử dụng
post
nhà máy, nhưng điều tương tự cũng đúng với tất cả các nhà máy.
Tôi nghĩ rằng tôi sẽ đề cập điều này với nhóm tài liệu WordPress. Có lẽ chúng ta có thể đưa những thứ này vào sổ tay plugin và chủ đề.
Cập nhật (ngày 20 tháng 6 năm 2015): Bạn cũng có thể tạo các nhà máy tùy chỉnh của riêng mình !
Cập nhật (ngày 27 tháng 9 năm 2016): Trong WordPress 4.4, các thử nghiệm đã được cập nhật để cung cấp factory()
phương thức tĩnh để truy cập vào các nhà máy, mặc dù factory
tài sản vẫn được cung cấp thông qua một công cụ ma thuật.
Mã nguồn tại
https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php
dường như là nơi tốt nhất để nhìn vào thời điểm này