Testowanie API Magento 2
Stworzyłem API i chcę napisać pliki testowe dla tego API. Jak można to zrobić w Magento 2.3.5? Odniosłem link -https://devdocs.magento.com/guides/v2.4/get-started/web-api-functional-testing.htmla także obejrzałem film autorstwa słynnego rosyjskiego programisty Magento. Nie mogę przeprowadzić testów i to jest błąd, który pojawia się, gdy uruchamiam test.
Polecenie, które uruchomiłem z mojego katalogu głównego Magento, to
vendor/bin/phpunit --config dev/tests/api-functional/phpunit_rest.xml
Błąd:
Nie można odczytać „dev / tests / api-Function / phpunit_rest.xml”.
Ponadto w PHPStorm nie mogę skonfigurować wersji testu jednostkowego. Otrzymuję ten błąd.
Jeśli używam autoloader.php, otrzymuję następujący błąd:
Po uruchomieniu następującego polecenia pojawia się ten błąd.
vendor/phpunit/phpunit/phpunit app/code/<Directory>
Potrzebuję pomocy w konfiguracji testowania API w PHPStorm i poprawnego działającego kodu do testowania API POST
Każda pomoc jest bardzo ceniona.
Odpowiedzi
Krok 1: Sprawdź, czy rozszerzenie PHP SOAP jest zainstalowane -> na górze index.php, który jest używany do obsługi witryny Magento, zamień pierwszą linię <?phpna <?php phpinfo(); die();I odśwież stronę, sprawdź, czy pojawia się rozszerzenie PHH_SOAP, jak na zrzucie ekranu poniżej
Krok 2: zgodnie z dokumentacją devdocs Skopiuj /dev/tests/api-functional/phpunit_rest.xml.dist i phpunit_soap.xml.dist do /dev/tests/api-functional/phpunit_rest.xml i phpunit_soap.xml.
Krok 3: Utwórz użytkownika API Przejdź do System/Integration, dodaj użytkownika API i przypisz wszystkie role (przynajmniej początkowo do pierwszego wywołania)
Sprawdź powyższe kroki, uruchamiając domyślne wywołanie interfejsu API Magento w programie Postman for isntance. Lub używając skryptu php, takiego jak ten poniżej (linia nośnika musi być dostosowana za pomocą your token access key)
<?php
// \Magento\Webapi\Model\ServiceMetadata::getServicesConfig to debug the available webapi services
$params = ['order_id' => null]; foreach ($argv as $arg) { if (preg_match("%^--(.*?)=(.*?)$%", $arg, $m)) {
$params[$m[1]] = $m[2]; } } if (!$params['order_id'])
exit("Specify order id (as --order_id=_ID_ parameter)\n");
$orderId = (int)$params['order_id'];
$url = 'http://magecertif.test/index.php/rest/V1/orders/' . $orderId;
$ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Authorization: Bearer 75koeeydi18xzclhmdib8ou65h9qk8cx' // this is the access token for the API user
)
);
//curl_setopt($ch,CURLOPT_POSTFIELDS, $str);
$result = curl_exec($ch);
curl_close($ch);
wynik działania tego skryptu powinien wyglądać jak na poniższym zrzucie ekranu:
Krok 4:
Copy /dev/tests/api-functional/config/install-config-mysql.php.dist to /dev/tests/api-functional/config/install-config-mysql.php.
Zastąp szczegóły bazy danych i hostuj danymi systemu.
Krok 5: Wreszcie, aby skonfigurować PHPStorm, jeśli konfiguracja xdebug działa do ogólnego przeglądania stron internetowych, wiersz poleceń dla klucza webapi powinien działać:
u mnie początkowo miałem ten sam błąd co ty. Muszę zmienić linię poleceń
php vendor/bin/phpunit --config dev/tests/api-functional/phpunit_rest.xml
z
php vendor/bin/phpunit --config /data/macbook/mage-cert2/dev/tests/api-functional/phpunit_rest.xml
A potem mój interfejs API w końcu został uruchomiony, zobacz wynik na zrzucie ekranu poniżej: