Dans les versions récentes, WP_UnitTestCase
a inclus une propriété $factory
.
Par exemple:
$post = $this->factory->post->create();
Où puis-je trouver de la documentation sur cette fonctionnalité utile?
À ma connaissance, il n’existe actuellement aucune documentation à ce sujet. La source officielle est ici .
J'ai également écrit un tutoriel sur les tests unitaires des plugins WordPress, qui donne quelques détails sur cette fonctionnalité .
L'un des avantages de l'utilisation de
WP_UnitTestCase
réside dans ses usines. Celles-ci sont accessibles via la variable membrefactory
.factory
est un objet avec des propriétés qui sont chacune une instance de l'une des classes définies dans includes/factory.php . Que font-ils, demandez-vous? Ils facilitent la création d'utilisateurs, de publications, de conditions, etc., où que vous soyez dans votre test. Donc, au lieu de faire ceci:$args = array( /* A bunch of user data you had to make up */ ); wp_insert_user( $args );
Vous pouvez simplement faire ceci:
$user_id = $this->factory->user->create();
Mais attendez, ça va encore mieux. Que faire si vous avez besoin de plusieurs utilisateurs (ou publications, ou autre chose)? Vous pouvez simplement les créer en vrac comme ceci:
$user_ids = $this->factory->user->create_many( 25 );
Cela créera 25 utilisateurs que vous pourrez utiliser lors de votre test.
La
factory
a les propriétés suivantes que vous pouvez utiliser:
$post
$attachment
$comment
$user
$term
$category
$tag
$blog
Ils peuvent tous être utilisés de la même manière que celle illustrée dans l'exemple ci-dessus avec l'usine
$user
. Par exemple, vous pouvez créer un post comme ceci:
$this->factory->post->create();
Vous pouvez également spécifier des arguments particuliers à utiliser pour créer l'objet. Dans l'exemple ci-dessus, nous avons créé une publication, mais celle-ci n'a pas été attribuée à un utilisateur particulier (le champ
post_author
sera par défaut à0
). Parfois, nous pouvons souhaiter que la publication soit attribuée à un utilisateur. Nous ferions ça comme ça:$user_id = $this->factory->user->create(); $post_id = $this->factory->post->create( array( 'post_author' => $user_id ) );
De plus, si vous avez besoin de plus que l'ID de l'objet que vous créez, vous n'avez pas besoin de faire ceci:
$post_id = $this->factory->post->create(); $post = get_post( $post_id );
À la place, utilisez la méthode
create_and_get()
:// $post will be an instance of WP_Post $post = $this->factory->post->create_and_get();
Dans cet exemple, nous avons utilisé l’usine
post
, mais il en va de même pour toutes les usines.
Je pense que je vais en parler à l'équipe de documentation WordPress. Peut-être pourrions-nous intégrer ces informations dans les manuels de plugins et de thèmes.
Mise à jour (20 juin 2015): Vous pouvez aussi créer vos propres fabriques personnalisées !
Mise à jour (27 septembre 2016): Dans WordPress 4.4, les tests ont été mis à jour pour fournir une méthode statique factory()
permettant d'accéder aux usines, bien que la propriété factory
soit toujours fournie via un outil de lecture magique.
Le code source à
https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php
semble être le meilleur endroit pour regarder le moment