Thử nghiệm API Magento 2

Aug 25 2020

Tôi đã tạo một API và tôi muốn viết các tệp thử nghiệm cho API đó. Làm thế nào nó có thể được thực hiện trong Magento 2.3.5? Tôi đã giới thiệu liên kết -https://devdocs.magento.com/guides/v2.4/get-started/web-api-functional-testing.htmlvà cũng đã xem video của Nhà phát triển Magento nổi tiếng người Nga. Tôi không thể chạy thử nghiệm và đây là lỗi tôi gặp phải nếu tôi chạy thử nghiệm.

Lệnh tôi đã chạy từ thư mục gốc Magento của mình là

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

Lỗi là:

Không thể đọc "dev / tests / api-functions / phpunit_rest.xml".

Ngoài ra, trong PHPStorm, tôi không thể định cấu hình phiên bản Unit Test. Tôi nhận được lỗi này.

Nếu tôi sử dụng autoloader.php, tôi gặp lỗi sau:

Khi tôi chạy lệnh sau, tôi gặp lỗi này.

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

Tôi cần trợ giúp trong việc thiết lập kiểm tra API trong PHPStorm và mã hoạt động chính xác để kiểm tra API POST

Bất kỳ sự trợ giúp nào cũng được đánh giá cao.

Trả lời

HerveTribouilloy Aug 30 2020 at 18:27

Bước 1: Phần mở rộng Verifiy PHP SOAP được cài đặt -> ở đầu index.php được sử dụng để phục vụ trang Magento, hãy thay thế dòng đầu tiên <?phpbằng <?php phpinfo(); die();Và làm mới trang web, kiểm tra phần mở rộng PHH_SOAP xuất hiện theo ảnh chụp màn hình bên dưới

Bước 2: theo tài liệu devdocs, Sao chép /dev/tests/api-f Chức năng/phpunit_rest.xml.dist và phpunit_soap.xml.dist vào /dev/tests/api-f Chức năng/phpunit_rest.xml và phpunit_soap.xml.

Bước 3: Tạo người dùng API Đi tới System/Integration, thêm người dùng API và chỉ định tất cả các vai trò (ít nhất là ban đầu cho đến khi cuộc gọi đầu tiên được thực hiện)

Xác thực các bước trên bằng cách chạy lệnh gọi API Magento mặc định trong Postman cho isntance. Hoặc sử dụng tập lệnh php như bên dưới (dòng mang phải được điều chỉnh bằng 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);

kết quả của tập lệnh này sẽ giống như ảnh chụp màn hình bên dưới:

Bước 4:

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

thay thế chi tiết cơ sở dữ liệu và máy chủ lưu trữ bằng chi tiết hệ thống của bạn.

Bước 5: Cuối cùng để thiết lập PHPStorm, nếu thiết lập xdebug của bạn hoạt động để duyệt trang web chung, thì dòng lệnh cho khóa webapi sẽ hoạt động:

đối với tôi, tôi đã có cùng một lỗi như bạn ban đầu. Tôi phải thay đổi dòng lệnh

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

với

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

Và sau đó, API của tôi cuối cùng đã chạy, hãy xem kết quả trong ảnh chụp màn hình bên dưới: