Nas versões recentes WP_UnitTestCase
, incluiu uma $factory
propriedade.
Por exemplo:
$post = $this->factory->post->create();
Onde posso encontrar documentação sobre esse recurso útil?
fonte
Nas versões recentes WP_UnitTestCase
, incluiu uma $factory
propriedade.
Por exemplo:
$post = $this->factory->post->create();
Onde posso encontrar documentação sobre esse recurso útil?
Até onde eu sei, não há documentação para isso no momento. A fonte oficial está aqui .
Também escrevi um tutorial sobre testes de unidade de plug-ins do WordPress, que fornece alguns detalhes sobre esse recurso .
Uma das vantagens do uso
WP_UnitTestCase
são suas fábricas. Estes podem ser acessados através dafactory
variável de membro. Ofactory
é um objeto com propriedades que são cada uma instância de uma das classes definidas em includes / factory.php . O que eles fazem, você pergunta? Eles tornam muito simples a criação de usuários, postagens, termos etc., sempre que você precisar deles em seu teste. Então, em vez de fazer isso:$args = array( /* A bunch of user data you had to make up */ ); wp_insert_user( $args );
Você pode fazer isso:
$user_id = $this->factory->user->create();
Mas espere, isso fica ainda melhor. E se você precisar de muitos usuários (ou postagens, ou o que for)? Você pode apenas criá-los em massa assim:
$user_ids = $this->factory->user->create_many( 25 );
Isso criará 25 usuários que você pode usar em seu teste.
O
factory
possui as seguintes propriedades que você pode usar:
$post
$attachment
$comment
$user
$term
$category
$tag
$blog
Todos eles podem ser usados da mesma maneira que demonstrada no exemplo acima com a
$user
fábrica. Por exemplo, você pode criar uma postagem como esta:
$this->factory->post->create();
Você também pode especificar argumentos específicos a serem usados para criar o objeto. No exemplo acima, criamos uma postagem, mas ela não foi atribuída a um usuário específico (o
post_author
campo será o padrão0
). Às vezes, podemos querer que a postagem seja atribuída a um usuário. Faríamos isso assim:$user_id = $this->factory->user->create(); $post_id = $this->factory->post->create( array( 'post_author' => $user_id ) );
Além disso, se você precisar mais do que apenas o ID do objeto que está criando, não precisará fazer isso:
$post_id = $this->factory->post->create(); $post = get_post( $post_id );
Em vez disso, use o
create_and_get()
método:// $post will be an instance of WP_Post $post = $this->factory->post->create_and_get();
Neste exemplo, usamos a
post
fábrica, mas o mesmo vale para todas as fábricas.
Acho que vou mencionar isso para a equipe de documentos do WordPress. Talvez possamos colocar essas coisas nos manuais de plugins e temas.
Atualização (20 de junho de 2015): Você também pode criar suas próprias fábricas personalizadas !
Atualização (27 de setembro de 2016): No WordPress 4.4, os testes foram atualizados para fornecer um factory()
método estático para acessar as fábricas, embora a factory
propriedade ainda seja fornecida por um getter mágico.
O código fonte em
https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php
parece ser o melhor lugar para se olhar no momento
fonte