Até agora, para minhas necessidades de teste do Magento 2, eu tenho usado o PHP Unit como (mais ou menos) um testador de aceitação - testando resultados de solicitações de servidor e HTML feitas em um sistema com meus módulos instalados. Eu gostaria de poder criar meus próprios testes de integração. As ferramentas de teste fornecidas com o Magento 2 permitem que desenvolvedores terceiros criem seus próprios testes de integração que aproveitam o código da estrutura de testes do Magento? Ou estaremos todos lançando nossa própria inicialização?
Isso é
- Sou desenvolvedor Magento
- Eu gostaria de criar um teste de integração
- Eu faria meu teste de integração para ter um ambiente Magento totalmente de inicialização (por exemplo, gerenciador de objetos e / ou injeção de dependência para usar)
- Gostaria que meu teste de integração estendesse o
Magento\TestFramework\TestCase\AbstractController
teste, para que eu tenha os mesmos auxiliares que os testes Magento - Eu gostaria de poder executar meus testes isoladamente do restante do conjunto de testes (ou seja, não tenho que esperar 2 horas para executar meus 15 segundos de testes)
- Gostaria que meus testes fossem armazenados separadamente dos testes do Magento
O site dev docs possui alguns artigos iniciais sobre testes, mas eles parecem orientados para executar os testes que acompanham o Magento e não para criar e executar seus próprios testes. Existem os módulos de amostra antigos , mas todos eles estendem a PHPUnit_Framework_TestCase
classe e parecem ser testes de unidade (ou seja, código de teste que não depende da estrutura do Magento)
Existe uma maneira fornecida do Magento de fazer isso?
Caso contrário, alguém criou sua própria configuração de forma que o teste da comunidade de desenvolvedores Magento pudesse adotá-la como padrão?
fonte
__DIR__
should be followed by a slash (/_files
). Second, the fixture is loaded from within the TestFramework so that the__DIR__
actually points to the TestFramework directory and not your own module. TheComponentRegistrar
can be used for this:require $ObjectManager::getInstance()->get(ComponentRegistrar::class)->getPath('module', 'Foo_Bar').'/Test/Integration/_files/example.php';
Eu brinquei um pouco com os testes de integração, e foi isso que encontrei até agora.
Basicamente, segui etapas semelhantes ao que Fooman disse, com algumas diferenças para fazer o teste de integração fazer parte do meu módulo.
Estes são os passos que segui:
1- Coloque seus testes de integração em
app/code/Vendor/CustomModule/Test/Integration
2- Copiar
dev/tests/integration/phpunit.dist.xml
paradev/tests/integration/phpunit.xml
e substitua
com
3- Então eu o executo usando a ferramenta CLI
bin/magento dev:test:run integration
Você deve ter em mente o que Fooman diz sobre o "TESTS_CLEANUP" e o tempo necessário para configurar os testes de integração, se a limpeza estiver ativada.
Aqui eu adiciono um exemplo funcional para referência adicional. Você verá como pode acessar o gerenciador de objetos e gerar instâncias das classes Magento, além de usar equipamentos Magento.
app / code / Vendor / CustomModule / Controller / Order / Info.php
app / code / Vendor / CustomModule / etc / frontend / routes.xml
app / code / Vendor / CustomModule / etc / module.xml
app / code / Vendor / CustomModule / Test / Integration / Controller / Order / InfoTest.php
app / code / Vendor / CustomModule / registration.php
fonte