ইন্টিগ্রেশন টেস্টগুলির সাথে আমি কিছুটা খেলেছি, এবং এটি আমি এখনও অবধি খুঁজে পেয়েছি।
মূলত, ইন্টিগ্রেশন টেস্টটি আমার মডিউলের অংশ হতে যাতে কিছু পার্থক্য নিয়ে আমি ফুমন যা বলেছিলাম তার অনুরূপ পদক্ষেপগুলি আমি অনুসরণ করেছি।
এই আমি অনুসরণ করা পদক্ষেপগুলি:
1- এর অধীনে আপনার সংহতকরণ পরীক্ষা রাখুন Place app/code/Vendor/CustomModule/Test/Integration
2- অনুলিপি dev/tests/integration/phpunit.dist.xml
করুনdev/tests/integration/phpunit.xml
এবং প্রতিস্থাপন
<testsuite name="Magento Integration Tests">
<directory suffix="Test.php">testsuite</directory>
<directory suffix="Test.php">../../../update/dev/tests/integration/testsuite</directory>
<exclude>testsuite/Magento/Test/Integrity</exclude>
<exclude>testsuite/Magento/MemoryUsageTest.php</exclude>
</testsuite>
সঙ্গে
<testsuite name="Magento Integration Tests">
<directory suffix="Test.php">../../../app/code/Vendor/CustomModule/Test/Integration</directory>
</testsuite>
3- তারপরে আমি এটি সি এল এল সরঞ্জাম ব্যবহার করে চালাচ্ছি bin/magento dev:test:run integration
"TESTS_CLEANUP" সম্পর্কে ফুম্যান কী বলেছে এবং আপনার যদি ক্লিনআপ সক্ষম থাকে তবে ইন্টিগ্রেশন টেস্ট সেটআপ করতে যে সময় লাগে তা আপনার মনে থাকা উচিত।
এখানে আমি আরও রেফারেন্সের জন্য একটি কার্যকরী উদাহরণ যুক্ত করছি। আপনি কীভাবে অবজেক্ট ম্যানেজারটি অ্যাক্সেস করতে পারবেন এবং ম্যাজেন্টো ক্লাসগুলির উদাহরণ তৈরি করতে পারবেন পাশাপাশি ম্যাজেন্টো ফিক্সচারও ব্যবহার করতে পারবেন।
অ্যাপ্লিকেশন / কোড / বিক্রেতা / CustomModule / কন্ট্রোলার / ORDER / Info.php
namespace Vendor\CustomModule\Controller\Order;
use Magento\Framework\Controller\ResultFactory;
class Info
extends \Magento\Framework\App\Action\Action
{
/**
* @param \Magento\Framework\App\Action\Context $context
* @param \Magento\Sales\Api\OrderRepositoryInterface $orderRepository
*/
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Sales\Api\OrderRepositoryInterface $orderRepository
)
{
$this->orderRepository = $orderRepository;
parent::__construct($context);
}
/**
* Return Json OrderInfo
*
* @return \Magento\Framework\Controller\Result\Json $this
*/
public function execute()
{
$orderId = $this->getRequest()->getParam('id');
$order = $this->orderRepository->get($orderId);
$orderInfo = [
'total' => $order->getBaseGrandTotal()
];
/** @var \Magento\Framework\Controller\Result\Json $result */
$result = $this->resultFactory->create(ResultFactory::TYPE_JSON);
return $result->setData($orderInfo);
}
}
অ্যাপ্লিকেশন / কোড / বিক্রেতা / CustomModule জন্য / etc / ফ্রন্টএন্ড / routes.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="standard">
<route id="vendor_custommodule" frontName="vendor_custommodule">
<module name="Vendor_CustomModule"/>
</route>
</router>
</config>
অ্যাপ্লিকেশন / কোড / বিক্রেতা / CustomModule জন্য / etc / module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vendor_CustomModule" setup_version="1.0.0">
<sequence>
<module name="Magento_Sales" />
</sequence>
</module>
</config>
অ্যাপ্লিকেশন / কোড / বিক্রেতা / CustomModule / পরীক্ষা / ইন্টিগ্রেশন / কন্ট্রোলার / ORDER / InfoTest.php
namespace Vendor\CustomModule\Controller\Order;
use Magento\TestFramework\TestCase\AbstractController;
class InfoTest extends AbstractController
{
public function getOrderInfoActionDataProvider()
{
return [
'order with one simple item' => [
'incrementId' => '100000001',
'contentType' => 'application/json',
'orderTotal' => 100
]
];
}
/**
* @dataProvider getOrderInfoActionDataProvider
* @magentoDataFixture Magento/Sales/_files/order.php
*/
public function testOrderInfoAction($incrementId, $expectedContentType, $expectedOrderTotal)
{
/** @var $objectManager \Magento\TestFramework\ObjectManager */
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
/** @var \Magento\Sales\Model\OrderFactory $orderFactory */
$orderFactory = $objectManager->get('Magento\Sales\Model\OrderFactory');
$order = $orderFactory->create();
$order->loadByIncrementId($incrementId);
$this->dispatch("vendor_custommodule/order/info/id/{$order->getId()}");
$contentType = $this->getResponse()->getHeader('Content-Type');
$this->assertEquals($expectedContentType, $contentType->getFieldValue());
$responseJson = $this->getResponse()->getBody();
$responseArray = json_decode($responseJson, true);
$this->assertEquals($expectedOrderTotal, $responseArray['total']);
}
}
অ্যাপ্লিকেশন / কোড / বিক্রেতা / CustomModule / registration.php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Vendor_CustomModule',
__DIR__
);