Respostas:
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_UnitTestCasesão suas fábricas. Estes podem ser acessados através dafactoryvariá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
factorypossui as seguintes propriedades que você pode usar:
$post$attachment$comment$user$term$category$tag$blogTodos eles podem ser usados da mesma maneira que demonstrada no exemplo acima com a
$userfá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_authorcampo 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
postfá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 factorypropriedade 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