Pruebas de la API de Magento 2
Creé una API y quiero escribir archivos de prueba para esa API. ¿Cómo se puede hacer en Magento 2.3.5? He referido el enlace -https://devdocs.magento.com/guides/v2.4/get-started/web-api-functional-testing.htmly también vi el video de un famoso desarrollador ruso de Magento. No puedo ejecutar las pruebas y este es el error que obtengo si ejecuto la prueba.
El comando que ejecuté desde mi directorio raíz de Magento es
vendor/bin/phpunit --config dev/tests/api-functional/phpunit_rest.xml
el error es:
No se pudo leer "dev/tests/api-funcional/phpunit_rest.xml".
Además, en PHPStorm, no puedo configurar la versión de prueba unitaria. Estoy recibiendo este error.
Si uso el autoloader.php, recibo el siguiente error:
Cuando ejecuto el siguiente comando, recibo este error.
vendor/phpunit/phpunit/phpunit app/code/<Directory>
Necesito ayuda para configurar las pruebas de API en PHPStorm y el código de trabajo correcto para probar una API POST
Cualquier ayuda es muy apreciada.
Respuestas
Paso 1: Verifique que la extensión PHP SOAP esté instalada -> en la parte superior de index.php que se usa para servir el sitio de Magento, reemplace la primera línea <?phppor <?php phpinfo(); die();Y actualice el sitio, verifique que la extensión PHH_SOAP aparezca como se muestra en la captura de pantalla a continuación
Paso 2: según la documentación de devdocs Copie /dev/tests/api-funcional/phpunit_rest.xml.dist y phpunit_soap.xml.dist en /dev/tests/api-funcional/phpunit_rest.xml y phpunit_soap.xml.
Paso 3: crea un usuario de API Ve a System/Integration, agrega un usuario de API y asigna todos los roles (al menos inicialmente hasta que se realice la primera llamada)
Valide los pasos anteriores ejecutando una llamada API de Magento predeterminada en Postman por ejemplo. O usando un script php como el que se muestra a continuación (la línea del portador debe ajustarse con 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);
el resultado de este script debería ser como la siguiente captura de pantalla:
Paso 4:
Copy /dev/tests/api-functional/config/install-config-mysql.php.dist to /dev/tests/api-functional/config/install-config-mysql.php.
reemplace los detalles de su base de datos y host con los detalles de su sistema.
Paso 5: Finalmente, para configurar PHPStorm, si su configuración de xdebug funciona para la navegación general de páginas web, entonces la línea de comandos para la clave webapi debería estar funcionando:
para mí, tuve el mismo error que tú inicialmente. tengo que cambiar la linea de comandos
php vendor/bin/phpunit --config dev/tests/api-functional/phpunit_rest.xml
con
php vendor/bin/phpunit --config /data/macbook/mage-cert2/dev/tests/api-functional/phpunit_rest.xml
Y luego, mi API se ejecutó eventualmente, vea el resultado en la captura de pantalla a continuación: