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_UnitTestCaseest ses usines. Ceux-ci sont accessibles via lafactoryvariable membre. L'factoryest 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
factorypossède les propriétés suivantes que vous pouvez utiliser:
$post
$attachment
$comment
$user
$term
$category
$tag
$blogIls peuvent tous être utilisés de la même manière que démontré dans l'exemple ci-dessus avec l'
$userusine. 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_authorchamp 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'
postusine, 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 factoryproprié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