การทดสอบ Magento 2 API

Aug 25 2020

ฉันสร้าง API แล้วและต้องการเขียนไฟล์ทดสอบสำหรับ API นั้น สามารถทำได้อย่างไรใน Magento 2.3.5? ฉันได้อ้างถึงลิงก์ -https://devdocs.magento.com/guides/v2.4/get-started/web-api-functional-testing.htmlและยังได้เห็นวิดีโอโดย Magento Developer ที่มีชื่อเสียงของรัสเซีย ฉันไม่สามารถทำการทดสอบได้และนี่คือข้อผิดพลาดที่ฉันได้รับหากเรียกใช้การทดสอบ

คำสั่งที่ฉันรันจากไดเร็กทอรีรากของ Magento คือ

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

ข้อผิดพลาดคือ:

ไม่สามารถอ่าน "dev / testing / api-functional / 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:ติดตั้งส่วนขยาย Verifiy 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 และกำหนดบทบาททั้งหมด (อย่างน้อยในตอนแรกจนกว่าจะมีการโทรครั้งแรก)

ตรวจสอบขั้นตอนข้างต้นด้วยการเรียกใช้ Magento API เริ่มต้นใน 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 ของฉันก็ทำงานในที่สุดดูผลลัพธ์ในภาพหน้าจอด้านล่าง: