unit-tests – ¿Dónde puedo encontrar documentación para las clases de fábrica de WP_UnitTestCase?

Pregunta:

En versiones recientes, WP_UnitTestCase ha incluido una propiedad $factory .

Por ejemplo:

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

¿Dónde puedo encontrar documentación sobre esta útil función?

Respuesta:

Hasta donde yo sé, no hay documentación para ello en la actualidad. La fuente oficial está aquí .

También escribí un tutorial sobre pruebas unitarias de complementos de WordPress, que brinda algunos detalles sobre esta función .

Una de las ventajas de usar WP_UnitTestCase son sus fábricas. Se puede acceder a ellos a través de la variable miembro de factory . La factory es un objeto con propiedades que son cada una instancia de una de las clases definidas en includes / factory.php . ¿Qué hacen, preguntas? Hacen que sea muy sencillo crear usuarios, publicaciones, términos, etc., donde sea que los necesite en su prueba. Entonces, en lugar de hacer esto:

 $args = array( /* A bunch of user data you had to make up */ ); wp_insert_user( $args );

Puedes simplemente hacer esto:

$user_id = $this->factory->user->create();

Pero espera, esto se pone aún mejor. ¿Qué pasa si necesita muchos usuarios (o publicaciones, o lo que sea)? Puede crearlos a granel de esta manera:

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

Eso creará 25 usuarios que puede usar en su prueba.

La factory tiene las siguientes propiedades que puede utilizar:

  • $post
  • $attachment
  • $comment
  • $user
  • $term
  • $category
  • $tag
  • $blog

Todos pueden usarse de la misma manera que se demuestra en el ejemplo anterior con la fábrica $user . Por ejemplo, puede crear una publicación como esta:

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

También puede especificar argumentos particulares para usar para crear el objeto. En el ejemplo anterior, creamos una publicación, pero no se asignó a un usuario en particular (el campo post_author estará predeterminado en 0 ). A veces, es posible que deseemos que la publicación se asigne a un usuario. Lo haríamos así:

 $user_id = $this->factory->user->create(); $post_id = $this->factory->post->create( array( 'post_author' => $user_id ) );

Además, si necesita algo más que el ID del objeto que está creando, no necesita hacer esto:

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

En su lugar, use el método create_and_get() :

 // $post will be an instance of WP_Post $post = $this->factory->post->create_and_get();

En este ejemplo, usamos la fábrica de post , pero lo mismo es cierto para todas las fábricas.

Creo que le mencionaré esto al equipo de documentación de WordPress. Tal vez podamos incluir estas cosas en los manuales de complementos y temas.

Actualización (20 de junio de 2015): ¡ También puede crear sus propias fábricas personalizadas !

Actualización (27 de septiembre de 2016): en WordPress 4.4, las pruebas se actualizaron para proporcionar un método factory() estático para acceder a las fábricas, aunque la propiedad de la factory todavía se proporciona a través de un captador mágico.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım