Antworten:
Soweit ich weiß, gibt es derzeit keine Dokumentation dafür. Die offizielle Quelle ist hier .
Ich habe auch ein Tutorial zum Testen von WordPress-Plugins geschrieben, das einige Details zu dieser Funktion enthält .
Einer der Vorteile der Nutzung
WP_UnitTestCase
sind die Fabriken. Auf diese kann über diefactory
Mitgliedsvariable zugegriffen werden. Dasfactory
ist ein Objekt mit Eigenschaften, die jeweils eine Instanz einer der in includes / factory.php definierten Klassen sind . Was machen sie, fragst du? Sie machen es sehr einfach, Benutzer, Beiträge, Begriffe usw. zu erstellen, wo immer Sie sie in Ihrem Test benötigen. Also, anstatt dies zu tun:$args = array( /* A bunch of user data you had to make up */ ); wp_insert_user( $args );
Sie können dies einfach tun:
$user_id = $this->factory->user->create();
Aber warte, es wird noch besser. Was ist, wenn Sie viele Benutzer (oder Beiträge oder was auch immer) benötigen ? Sie können sie einfach in loser Schüttung wie folgt erstellen:
$user_ids = $this->factory->user->create_many( 25 );
Dadurch werden 25 Benutzer erstellt, die Sie in Ihrem Test verwenden können.
Das
factory
hat die folgenden Eigenschaften, die Sie verwenden können:
$post
$attachment
$comment
$user
$term
$category
$tag
$blog
Sie können alle auf die gleiche Weise verwendet werden, wie im obigen Beispiel im
$user
Werk gezeigt. Beispielsweise können Sie einen Beitrag wie folgt erstellen:
$this->factory->post->create();
Sie können auch bestimmte Argumente angeben, die zum Erstellen des Objekts verwendet werden sollen. Im obigen Beispiel haben wir einen Beitrag erstellt, der jedoch keinem bestimmten Benutzer zugewiesen wurde (das
post_author
Feld wird standardmäßig verwendet0
). Manchmal möchten wir den Beitrag stattdessen einem Benutzer zuweisen. Wir würden das so machen:$user_id = $this->factory->user->create(); $post_id = $this->factory->post->create( array( 'post_author' => $user_id ) );
Wenn Sie mehr als nur die ID des Objekts benötigen, das Sie erstellen, müssen Sie dies auch nicht tun:
$post_id = $this->factory->post->create(); $post = get_post( $post_id );
Verwenden Sie stattdessen die
create_and_get()
Methode:// $post will be an instance of WP_Post $post = $this->factory->post->create_and_get();
In diesem Beispiel haben wir die
post
Fabrik benutzt, aber das gleiche gilt für alle Fabriken.
Ich denke, ich werde dies dem WordPress-Docs-Team mitteilen. Vielleicht können wir dieses Zeug in die Plugin- und Themenhandbücher aufnehmen.
Update (20. Juni 2015): Sie können auch Ihre eigenen benutzerdefinierten Fabriken erstellen !
Update (27. September 2016): In WordPress 4.4 wurden die Tests aktualisiert, um eine statische factory()
Methode für den Zugriff auf die Fabriken bereitzustellen , obwohl die factory
Eigenschaft weiterhin über einen Magic Getter bereitgestellt wird.
Der Quellcode bei
https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php
scheint der beste Ort zu sein, um im Moment zu schauen