Test dell'API di Magento 2

Aug 25 2020

Ho creato un'API e voglio scrivere file di test per quell'API. Come si può fare in Magento 2.3.5? Ho segnalato il link -https://devdocs.magento.com/guides/v2.4/get-started/web-api-functional-testing.htmle ho anche visto il video di un famoso sviluppatore Magento russo. Non riesco a eseguire i test e questo è l'errore che ottengo se eseguo il test.

Il comando che ho eseguito dalla mia directory principale di Magento è

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

L'errore è:

Impossibile leggere "dev/tests/api-functional/phpunit_rest.xml".

Inoltre, in PHPStorm, non riesco a configurare la versione Unit Test. Sto ricevendo questo errore.

Se utilizzo autoloader.php ricevo il seguente errore:

Quando eseguo il seguente comando ricevo questo errore.

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

Ho bisogno di aiuto per impostare il test API in PHPStorm e il codice di lavoro corretto per testare un'API POST

Qualsiasi aiuto è molto apprezzato.

Risposte

HerveTribouilloy Aug 30 2020 at 18:27

Passaggio 1: verifica che l'estensione PHP SOAP sia installata —> nella parte superiore di index.php utilizzato per servire il sito Magento, sostituisci la prima riga <?phpcon <?php phpinfo(); die();E aggiorna il sito, controlla che l'estensione PHH_SOAP appaia come da screenshot qui sotto

Passaggio 2: come da documentazione devdocs Copia /dev/tests/api-functional/phpunit_rest.xml.dist e phpunit_soap.xml.dist in /dev/tests/api-functional/phpunit_rest.xml e phpunit_soap.xml.

Passaggio 3: crea un utente API Vai a System/Integration, aggiungi un utente API e assegna tutti i ruoli (almeno inizialmente fino a quando non viene effettuata la prima chiamata)

Convalida i passaggi precedenti eseguendo una chiamata API Magento predefinita in Postman per esempio. Oppure usando uno script php come quello qui sotto (la linea portante deve essere regolata 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);

il risultato di questo script dovrebbe essere come lo screenshot qui sotto:

Passaggio 4:

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

sostituire i dettagli del database e l'host con i dettagli del sistema.

Passaggio 5: Infine, per configurare PHPStorm, se la configurazione di xdebug funziona per la navigazione generale delle pagine Web, la riga di comando per la chiave webapi dovrebbe funzionare:

per me, inizialmente ho avuto lo stesso errore di te. Devo cambiare la riga di comando

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

insieme a

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

E poi, la mia API è stata eseguita alla fine, vedi il risultato nello screenshot qui sotto: