Do tej pory dla moich potrzeb testowania Magento 2 używałem PHP Unit jako (mniej więcej) testera akceptacji - testującego wyniki żądań serwera i HTML wprowadzonych do systemu z zainstalowanymi moimi modułami. Chciałbym móc tworzyć własne testy integracyjne. Czy narzędzia testowe dostarczane z Magento 2 pozwalają programistom zewnętrznym tworzyć własne testy integracyjne wykorzystujące kodowy szkielet testowy Magento? A może wszyscy będziemy tworzyć własny pasek startowy?
To jest
- Jestem programistą Magento
- Chciałbym utworzyć test integracyjny
- Chciałbym, aby mój test integracyjny miał środowisko Magento w pełni uruchamiające się (np. Menedżer obiektów i / lub zastrzyk zależności do użycia)
- Chciałbym, aby mój test integracyjny przedłużył
Magento\TestFramework\TestCase\AbstractController
test, więc mam tych samych pomocników, co testy Magento - Chciałbym móc uruchomić moje testy w oderwaniu od reszty zestawu testów (tj. Nie muszę czekać 2 godziny na uruchomienie moich 15 sekund testów)
- Chciałbym, aby moje testy były przechowywane oddzielnie od testów Magento
Witryna Dev Docs zawiera kilka artykułów startowych na temat testowania, ale wydają się one zorientowane na przeprowadzanie testów dostarczanych z Magento, a nie na tworzenie i uruchamianie własnych testów. Istnieją stare przykładowe moduły , ale wszystkie rozszerzają PHPUnit_Framework_TestCase
klasę i wydają się być testami jednostkowymi (tj. Testowaniem kodu, który nie opiera się na frameworku Magento)
Czy istnieje sposób na to, aby zapewnić Magento?
Jeśli nie, to czy ktoś wypuścił własną konfigurację w taki sposób, że test społeczności programistów Magento mógłby ją przyjąć jako standard?
źródło
__DIR__
należy wstawić ukośnik (/_files
). Po drugie, urządzenie jest ładowane z poziomu TestFramework, tak że__DIR__
faktycznie wskazuje na katalog TestFramework, a nie na własny moduł.ComponentRegistrar
Mogą być wykorzystane do tego:require $ObjectManager::getInstance()->get(ComponentRegistrar::class)->getPath('module', 'Foo_Bar').'/Test/Integration/_files/example.php';
Grałem trochę w testy integracyjne i to właśnie znalazłem do tej pory.
Zasadniczo wykonałem podobne kroki, co powiedział Fooman, z pewnymi różnicami, aby test integracyjny był częścią mojego modułu.
Oto kroki, które wykonałem:
1- Umieść testy integracji pod
app/code/Vendor/CustomModule/Test/Integration
2- Kopiuj
dev/tests/integration/phpunit.dist.xml
dodev/tests/integration/phpunit.xml
i zamień
z
3- Następnie uruchamiam go za pomocą narzędzia CLI
bin/magento dev:test:run integration
Powinieneś pamiętać o tym, co Fooman mówi o „TESTS_CLEANUP” oraz o czasie potrzebnym do skonfigurowania testów integracji, jeśli masz włączone czyszczenie.
Tutaj dodaję funkcjonalny przykład w celu uzyskania dalszych informacji. Zobaczysz, jak możesz uzyskać dostęp do menedżera obiektów i wygenerować instancję klas Magento, a także korzystać z urządzeń Magento.
app / code / Vendor / CustomModule / Controller / Order / Info.php
app / code / Vendor / CustomModule / etc / frontend / tras.xml
app / code / Vendor / CustomModule / etc / module.xml
app / code / Vendor / CustomModule / Test / Integration / Controller / Order / InfoTest.php
app / code / Vendor / CustomModule / register.php
źródło