Teste de API do Magento 2

Aug 25 2020

Eu criei uma API e quero escrever arquivos de teste para essa API. Como isso pode ser feito no Magento 2.3.5? Eu indiquei o link -https://devdocs.magento.com/guides/v2.4/get-started/web-api-functional-testing.htmle também vi o vídeo de um famoso desenvolvedor Magento russo. Não consigo executar os testes e este é o erro que recebo se executar o teste.

O comando que executei no diretório raiz do Magento é

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

O erro é:

Não foi possível ler "dev/tests/api-functional/phpunit_rest.xml".

Além disso, no PHPStorm, não consigo configurar a versão do Unit Test. Estou recebendo este erro.

Se eu usar o autoloader.php, estou recebendo o seguinte erro:

Quando executo o seguinte comando, recebo este erro.

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

Preciso de ajuda para configurar o teste de API no PHPStorm e o código de trabalho correto para testar uma API POST

Qualquer ajuda é muito apreciada.

Respostas

HerveTribouilloy Aug 30 2020 at 18:27

Passo 1: Verifique se a extensão PHP SOAP está instalada —> no topo do index.php que é usado para servir o site Magento, substitua a primeira linha <?phppor <?php phpinfo(); die();E atualize o site, verifique se a extensão PHH_SOAP aparece conforme a captura de tela abaixo

Etapa 2: de acordo com a documentação do devdocs Copie /dev/tests/api-functional/phpunit_rest.xml.dist e phpunit_soap.xml.dist para /dev/tests/api-functional/phpunit_rest.xml e phpunit_soap.xml.

Etapa 3: criar um usuário de API Acesse System/Integration, adicione um usuário de API e atribua todas as funções (pelo menos inicialmente até que a primeira chamada seja feita)

Valide as etapas acima executando uma chamada de API padrão do Magento no Postman, por exemplo. Ou usando um script php como o abaixo (a linha do portador deve ser ajustada com 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);

o resultado deste script deve ser como a captura de tela abaixo:

Passo 4:

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

substitua os detalhes do banco de dados e do host pelos detalhes do sistema.

Etapa 5: Finalmente, para configurar o PHPStorm, se a configuração do xdebug funcionar para navegação geral na página da Web, a linha de comando da chave webapi deve funcionar:

para mim, tive o mesmo erro que você inicialmente. eu tenho que mudar a linha de comando

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

com

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

E então, minha API acabou rodando, veja o resultado na captura de tela abaixo: