web-dev-qa-db-fra.com

Où puis-je trouver de la documentation sur les classes de fabrique WP_UnitTestCase?

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?

21
djb

À 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 membre factory. 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.

26
J.D.

Le code source à

https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php

semble être le meilleur endroit pour regarder le moment

2
djb