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

21

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?

    
pregunta djb 25.03.2014 - 12:13

2 respuestas

26

Por lo que yo sé, no hay documentación para ello en este momento. La fuente oficial está aquí .

También he escrito un tutorial sobre la prueba de unidades de los complementos de WordPress, que brinda algunos detalles sobre esto característica .

  

Una de las ventajas de usar WP_UnitTestCase es sus fábricas.   Se puede acceder a estos a través de la variable miembro factory . los    factory es un objeto con propiedades que son cada una instancia de   una de las clases definidas en incluye / factory.php .   ¿Qué hacen, te preguntas? Hacen muy sencillo crear usuarios,   Publicaciones, términos, etc., donde los necesites en tu prueba. Así que en vez   de hacer esto:

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

Puedes hacer esto:

     

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

     

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

     

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

     

Eso creará 25 usuarios que puedes usar en tu prueba.

     

El factory tiene las siguientes propiedades que puede usar:

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

Todos se pueden usar de la misma manera que se demostró anteriormente.   ejemplo con la fábrica $user . Por ejemplo, puedes crear una publicación.   de esta manera:

     

$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 fue asignada   a un usuario en particular (el campo post_author usará por defecto   %código%). A veces podemos querer que la publicación sea asignada 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 necesitas hacer esto:

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

En su lugar, use el método 0 :

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

En este ejemplo, usamos el create_and_get() factory, pero lo mismo es cierto   para todas las fábricas.

Creo que lo mencionaré al equipo de documentos de WordPress. Tal vez podamos incluir esto en los manuales de complementos y temas.

Actualización (20 de junio de 2015): También puede Crea tus propias fábricas personalizadas !

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

    
respondido por el J.D. 25.03.2014 - 13:42
2

El código fuente en

enlace

parece ser el mejor lugar para mirar el momento

    
respondido por el djb 25.03.2014 - 12:29

Lea otras preguntas en las etiquetas