Ferramentas para teste de unidade no Magento

23

O que você usa para testes de unidade no Magento? Ou o que você sabe sobre testes de unidade e Magento? Se você faz TDD ou deseja apenas uma cobertura de teste de unidade para os componentes do seu projeto, você precisa de algumas ferramentas para fazer isso.

A primeira abordagem básica é usar phpunit simples, mas há coisas que precisam de truques adicionais para tornar o Magento "testável".

Tudo com o qual trabalhei está relacionado ao phpunit:

Existem outras opções?

FlorinelChis
fonte

Respostas:

14

Confira o PHPSpec com o MageSpec se você quiser algo não baseado no PHPUnit, mas com alguma integração do Magento. É utilizável, mas não completamente pronto para o horário nobre. Para zombar, o PHPSpec 2 usa Prophecy (o que é ótimo), mas não gosta de getters e setters mágicos. Por esse motivo, é melhor usar o Mockery , o que funciona bem (e eu também gosto muito).

Depois, há também o Behat com o BehatMage for BDD com o Magento. Vale a pena dar uma olhada, mas falha, por exemplo, se você quiser testar diferentes visualizações de loja em diferentes domínios.

Há também uma extensão do BehatMage chamada MageBehat (péssima nomeação!), Que saiu de uma hackathon. Ele fornece muitas ações específicas do Magento ao BehatMage, mas, para ser sincero, algumas das soluções alternativas usadas são mais um hack do que soluções reais para os problemas subjacentes. Ainda assim, é utilizável.

Espero ver os dois projetos - MageSpec e BehatMage - florescer no futuro.

Vinai
fonte
Obrigado Vinai pela sua resposta. Eu sei sobre o BehatMage e o trabalho realizado pela equipe da Inviqa / Session Digital (não está claro para mim a estrutura da empresa) ... Eu estava procurando apenas coisas de phpunit, o Behat / BehatMage não é tão atraente para mim, eu brinquei com MageSpec há um tempo atrás.
FlorinelChis
O inglês não é minha língua nativa, os detalhes que forneci poderiam ter sido mais claros. Estou pesquisando para o London Magento User Group - December Meetup.
FlorinelChis
4

PHPUnit é o que o Magento 2 usa. Aqui está um arquivo de exemplo no GitHub. https://github.com/magento/magento2/blob/master/dev/tests/unit/testsuite/Magento/Captcha/Helper/DataTest.php . (Escolhi esse arquivo aleatoriamente.) Você pode dar uma olhada rápida na abordagem de teste do Magento 2 para que tudo o que você faça agora seja compatível com o Magento 2 quando lançado.

Alan Kent
fonte
Não acho que o OP esteja falando sobre Magneto 2 aqui.
Marius
3

Você deve usar o EcomDev PHPUnit .

Pessoalmente, acredito que todos os desenvolvedores do Magento devem procurar uma solução consistente de teste de unidade. O EcomDev fornece as estruturas mais usadas e mais maduras para que você já tenha um conjunto decente de desenvolvedores com experiência. O uso de uma única estrutura também reduz a necessidade de instalar um bajilhão de estruturas diferentes.

No entanto, o EcomDev PHPUnit tem essa estranha convenção de colocar testes diretamente ao lado do código de produção. Felizmente, isso é facilmente resolvido modificando algumas linhas de código. O EcomDev também se diverte com as atualizações (embora o repo do Github mostre sinais de atividade, portanto eles ainda estão vivos).

Thai Phan
fonte
Então, dizendo tudo isso, existe um repositório em algum lugar que possui um conjunto de testes de unidade definidos (usando ecomdev_unittest) que testa a funcionalidade principal? (Eu sei MTAF faz isso, mas há pré-definidos testes de unidade em algum lugar?)
ProxiBlue
1
@ProxiBlue Não, não há nenhum que eu saiba. Essa é uma boa idéia para um projeto comunitário, no entanto.
Thai Phan
2

Para testes de unidade, o EcomDev PHPUnit é o melhor.

Talvez você queira tentar testes funcionais no Magento? Exemplo com casperjs: https://github.com/jacquesbh/hackathon-casperjs/

Jacques Bodin-Hullin
fonte
1
havia uma pergunta diferente sobre isso.
FlorinelChis