Réponses:
Pour autant que je sache, il n'y a pas de documentation pour le moment. 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
WP_UnitTestCase
est ses usines. Ceux-ci sont accessibles via lafactory
variable membre. L'factory
est un objet avec des propriétés qui sont chacune un exemple 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 termes, etc., partout où vous en avez besoin dans votre test. Donc, au lieu de faire ça:$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. Et si vous avez besoin de nombreux utilisateurs (ou publications, ou autre)? 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 dans votre test.
Le
factory
possède 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 démontré dans l'exemple ci-dessus avec l'
$user
usine. Par exemple, vous pouvez créer un article comme celui-ci:
$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 elle n'a pas été affectée à un utilisateur particulier (le
post_author
champ sera défini par défaut sur0
). Parfois, nous souhaitons que le message soit attribué à un utilisateur à la place. Nous ferions cela comme ceci:$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 le faire:
$post_id = $this->factory->post->create(); $post = get_post( $post_id );
Utilisez plutôt la
create_and_get()
méthode:// $post will be an instance of WP_Post $post = $this->factory->post->create_and_get();
Dans cet exemple, nous avons utilisé l'
post
usine, mais il en va de même pour toutes les usines.
Je pense que je vais le mentionner à l'équipe des documents WordPress. Peut-être pouvons-nous intégrer ces informations dans les manuels des plugins et des thèmes.
Mise à jour (20 juin 2015): Vous pouvez également créer vos propres usines personnalisées !
Mise à jour (27 septembre 2016): Dans WordPress 4.4, les tests ont été mis à jour pour fournir une factory()
méthode statique d'accès aux usines, bien que la factory
propriété soit toujours fournie via un getter magique.
Le code source sur
https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php
semble être le meilleur endroit pour regarder en ce moment