Ответы:
Насколько я знаю, в настоящее время нет документации для этого. Официальный источник здесь .
Я также написал учебник по модульному тестированию плагинов WordPress, в котором подробно рассказывается об этой функции .
Одним из преимуществ использования
WP_UnitTestCase
являются его фабрики. К ним можно получить доступ черезfactory
переменную-член. Этоfactory
объект со свойствами, каждый из которых является экземпляром одного из классов, определенных в include / 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 ) );
Кроме того, если вам нужно больше, чем просто идентификатор объекта, который вы создаете, вам не нужно делать это:
$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 июня 2015 г.): Вы также можете создавать свои собственные фабрики !
Обновление (27 сентября 2016 г.): В WordPress 4.4 тесты были обновлены, чтобы обеспечить статический factory()
метод доступа к фабрикам, хотя factory
свойство все еще предоставляется через магический метод получения .
Исходный код на
https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php
кажется, лучшее место, чтобы посмотреть на данный момент