Escrevendo casos de teste para um Plugin do WordPress que possui traduções

8

Qual é o meu objetivo?

Estou ansioso para escrever casos de teste para as traduções disponíveis de um plugin do WordPress.

Minha abordagem:

Eu configurei o WordPress usando VVV e minha suíte de testes inclui PHPUnit e WP-CLI .

Para testar (confirmar) as traduções, estou verificando se o arquivo .mo do idioma existe ou não.

/**
 * Test the translations.
 */
public function test_translations() {
    $this->assertFileExists( $this->object->path . 'lang/domain-name-de_DE.mo' );
    $this->assertFileExists( $this->object->path . 'lang/domain-name-lt_LT.mo' );
    $this->assertFileExists( $this->object->path . 'lang/domain-name-nl_NL.mo' );
}

Onde estou preso?

Esta é a abordagem correta para testar translations para um plug-in do WordPress? Caso contrário, sugira alternativas.

    
por Maria Daniel Deepak 08.07.2016 / 11:47

1 resposta

5

Se tudo o que você quer testar é que os arquivos de tradução existem, então esta é provavelmente a abordagem mais simples, já que você provavelmente já estará usando o PHPUnit para executar testes de unidade / integração no código do plugin.

No entanto, apenas verificar se os arquivos existem não lhe diz muito. Ele não informa se essas linguagens estão totalmente traduzidas ou se esses arquivos serão carregados corretamente pelo WordPress.

Então a pergunta que você precisa fazer é: "Por que estou testando isso?" Se você quer apenas se certificar de que você não deixa um arquivo de tradução acidentalmente, então seus testes devem fazer o que você precisa. Se você quiser realmente garantir que você tenha traduções completas para cada idioma e que elas realmente funcionem, essa é uma história completamente diferente.

Testando o carregamento da tradução

Para verificar se cada arquivo de tradução pode ser carregado corretamente pelo WordPress, você provavelmente poderia criar um teste PHPUnit que carregasse os arquivos usando load_plugin_textdomain() , e verificando se retorna true , o que indicaria que o textdomain poderia ser carregado corretamente. Você provavelmente precisará se conectar ao plugin_locale filter para verificar cada localidade que vem com seu plug-in.

Teste de integridade

No entanto, isso ainda não lhe diria quantas das strings foram realmente traduzidas para esse idioma, quantas são difusas, etc. Se você quiser verificar se cada tradução está pelo menos xx% completa, você provavelmente quer usar uma ferramenta diferente do PHPUnit para isso.

Teste de aparência

Você também pode ir além e verificar se as strings em cada tradução realmente aparecem corretamente na interface do usuário do plug-in. Às vezes, uma string pode ser muito mais longa em uma tradução do que no idioma original, e isso pode fazer com que ela transborde a área alocada para ela. Para verificar isso, é necessário usar algo como os testes de aceitação Codeception .

Conclusão

Então, em conclusão, se os testes que você tem são a abordagem correta para você depende do que você quer testar. Pessoalmente, eu não tenho nenhum teste para as traduções dos meus plugins, embora essa última parte sobre a verificação da interface tenha me intrigado. Apenas verificar se as traduções existem, como você está fazendo agora, não me parece fornecer muito benefício. É uma verificação que é tão boa quanto a sua lista de arquivos de tradução que você está verificando. E, em certo sentido, ele realmente não testa nada, apenas certifica-se de que está lá. Isso poderia ser executado em um script de construção em vez de PHPUnit. Verificar se as traduções podem realmente ser carregadas pelo WordPress faz fornecer IMO de benefício, porque na verdade testa que elas não estão corrompidas. E, claro, testa que eles existem ao mesmo tempo. Então eu provavelmente expandiria seus testes para verificar isso também.

Editar

Em uma nota relacionada, você também pode considerar testar qualquer erro de ortografia no seu POT principal (e também nas traduções, eu acho). É fácil para eles entrarem no radar. Provavelmente existem scripts de shell disponíveis que poderiam fazer isso.

    
por J.D. 08.07.2016 / 15:17