Тестирование API Magento 2

Aug 25 2020

Я создал API и хочу написать тестовые файлы для этого API. Как это можно сделать в Magento 2.3.5? Я сослался по ссылке -https://devdocs.magento.com/guides/v2.4/get-started/web-api-functional-testing.htmlа также посмотрел видео известного российского разработчика Magento. Я не могу запустить тесты, и это ошибка, которую я получаю, если запускаю тест.

Команда, которую я выполнил из корневого каталога Magento, такова:

vendor/bin/phpunit --config dev/tests/api-functional/phpunit_rest.xml

Ошибка:

Не удалось прочитать "dev / tests / api -function / phpunit_rest.xml".

Кроме того, в PHPStorm я не могу настроить версию модульного теста. Я получаю эту ошибку.

Если я использую autoloader.php, я получаю следующую ошибку:

Когда я запускаю следующую команду, я получаю эту ошибку.

vendor/phpunit/phpunit/phpunit app/code/<Directory>

Мне нужна помощь в настройке тестирования API в PHPStorm и правильный рабочий код для тестирования POST API.

Любая помощь высоко ценится.

Ответы

HerveTribouilloy Aug 30 2020 at 18:27

Шаг 1. Убедитесь, что расширение PHP SOAP установлено -> в верхней части index.php, который используется для обслуживания сайта Magento, замените первую строку <?phpна <?php phpinfo(); die();И обновите сайт, проверьте, что расширение PHH_SOAP отображается, как показано на снимке экрана ниже.

Шаг 2: согласно документации devdocs Скопируйте /dev/tests/api-functional/phpunit_rest.xml.dist и phpunit_soap.xml.dist в /dev/tests/api-functional/phpunit_rest.xml и phpunit_soap.xml.

Шаг 3. Создайте пользователя API. Перейдите к System/Integration, добавьте пользователя API и назначьте все роли (по крайней мере, сначала, пока не будет сделан первый вызов)

Подтвердите вышеуказанные шаги, запустив вызов API Magento по умолчанию в Postman для isntance. Или используя скрипт php, подобный приведенному ниже (линия носителя должна быть скорректирована с помощью 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);

результат этого скрипта должен быть как на скриншоте ниже:

Шаг 4:

Copy /dev/tests/api-functional/config/install-config-mysql.php.dist to /dev/tests/api-functional/config/install-config-mysql.php.

замените данные вашей базы данных и хост на данные вашей системы.

Шаг 5: Наконец, чтобы настроить PHPStorm, если ваша установка xdebug работает для обычного просмотра веб-страниц, тогда должна работать командная строка для ключа webapi:

для меня у меня была та же ошибка, что и у вас изначально. Мне нужно изменить командную строку

php vendor/bin/phpunit --config dev/tests/api-functional/phpunit_rest.xml

с участием

php vendor/bin/phpunit --config /data/macbook/mage-cert2/dev/tests/api-functional/phpunit_rest.xml

И затем мой API в конце концов запустился, результат см. На скриншоте ниже: