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