En versiones recientes WP_UnitTestCase
ha incluido una $factory
propiedad.
Por ejemplo:
$post = $this->factory->post->create();
¿Dónde puedo encontrar documentación sobre esta útil característica?
fuente
En versiones recientes WP_UnitTestCase
ha incluido una $factory
propiedad.
Por ejemplo:
$post = $this->factory->post->create();
¿Dónde puedo encontrar documentación sobre esta útil característica?
Hasta donde yo sé, no hay documentación para ello en este momento. La fuente oficial está aquí .
También he escrito un tutorial sobre la unidad que prueba los complementos de WordPress, que brinda algunos detalles sobre esta característica .
Una de las ventajas de usar
WP_UnitTestCase
es sus fábricas. Se puede acceder a estos a través de lafactory
variable miembro. Elfactory
es un objeto con propiedades que son cada una una instancia de una de las clases definidas en incluye / factory.php . ¿Qué hacen, preguntas? Facilitan la creación de 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 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)? Simplemente 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.
El
factory
tiene las siguientes propiedades que se pueden utilizar:
$post
$attachment
$comment
$user
$term
$category
$tag
$blog
Todos pueden usarse de la misma manera que se demostró en el ejemplo anterior con la
$user
fábrica. Por ejemplo, puedes 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
post_author
campo estará predeterminado en0
). A veces podemos querer la publicación asignada a un usuario en su lugar. 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 la 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
create_and_get()
método:// $post will be an instance of WP_Post $post = $this->factory->post->create_and_get();
En este ejemplo, utilizamos la
post
fábrica, pero lo mismo es cierto para todas las fábricas.
Creo que mencionaré esto al equipo de documentos de WordPress. Tal vez podamos incluir esto en los manuales de plugins y temas.
Actualización (20 de junio de 2015): ¡ También puedes crear tus propias fábricas personalizadas !
Actualización (27 de septiembre de 2016): en WordPress 4.4, las pruebas se actualizaron para proporcionar un factory()
método estático para acceder a las fábricas, aunque la factory
propiedad aún se proporciona a través de un getter mágico.
El código fuente en
https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php
parece ser el mejor lugar para mirar en este momento
fuente