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

21

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?

    
posée djb 25.03.2014 - 12:13
la source

2 réponses

26

À ma connaissance, il n’existe actuellement aucune documentation à ce sujet. La source officielle est ici .

J'ai également écrit un didacticiel sur les modules de test unitaire WordPress, , qui fournit des détails à ce sujet. fonctionnalité .

  

L’un des avantages de WP_UnitTestCase réside dans ses usines.   Ceux-ci sont accessibles via la variable membre factory . le    factory est un objet avec des propriétés qui sont chacune une instance de   une des classes définies dans includes / factory.php .   Que font-ils, demandez-vous? Ils rendent très simple la création d’utilisateurs,   messages, termes, etc., partout où vous en avez besoin 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. Et si vous avez besoin de plusieurs utilisateurs   (ou messages, ou autre chose)? Vous pouvez simplement les créer en bloc comme ceci:

     

$user_ids = $this->factory->user->create_many( 25 );

     

Cela créera 25 utilisateurs que vous pourrez utiliser lors de votre test.

     

Le 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 démontré ci-dessus   exemple avec l’usine $user . Par exemple, vous pouvez créer un article   comme ceci:

     

$this->factory->post->create();

     

Vous pouvez également spécifier des arguments particuliers à utiliser pour créer le   objet. Dans l'exemple ci-dessus, nous avons créé un article, mais celui-ci n'a pas été attribué.   à 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 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 êtes   créer, vous n'avez pas besoin de faire ceci:

$post_id = $this->factory->post->create();
$post = get_post( $post_id );
     

Utilisez plutôt 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 de WordPress. Peut-être pourrions-nous intégrer ces informations dans les manuels de plug-ins et de thèmes.

Mise à jour (20 juin 2015): vous pouvez également créez vos propres usines personnalisées !

Mise à jour (27 septembre 2016): Dans WordPress 4.4, les tests ont été mis à jour pour fournir une méthode statique factory() pour accéder aux usines, bien que la propriété factory soit toujours fournie via un outil de lecture magique.

    
réponse donnée J.D. 25.03.2014 - 13:42
la source
2

Le code source sur

enlace

semble être le meilleur endroit pour regarder le moment

    
réponse donnée djb 25.03.2014 - 12:29
la source

Lire d'autres questions sur les étiquettes