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?
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?
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 miembrofactory
. losfactory
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.
Lea otras preguntas en las etiquetas unit-tests