Відповіді:
Наскільки мені відомо, наразі документації на це немає. Офіційне джерело тут .
Я також написав навчальний посібник з тестування модулів 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
здається, найкраще місце для того, щоб подивитися на даний момент