मैंने एकीकरण परीक्षणों के साथ थोड़ा सा खेला है, और यही मैंने अब तक पाया है।
मूल रूप से, फोमेन ने जो कहा, मैंने कुछ इसी तरह के कदमों का पालन किया है ताकि एकीकरण परीक्षण को मेरे मॉड्यूल का हिस्सा बनाया जा सके।
ये चरण हैं जिनका मैंने अनुसरण किया है:
1- अपने एकीकरण परीक्षण के तहत रखें 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- फिर मैं इसे CLI टूल का उपयोग करके चलाता हूं bin/magento dev:test:run integration
आपको यह ध्यान में रखना चाहिए कि फोमन "TESTS_CLEANUP" के बारे में क्या कहता है और यदि आपको क्लीनअप सक्षम है तो एकीकरण परीक्षणों को सेटअप करने में समय लगता है।
यहां मैं आगे के संदर्भ के लिए एक कार्यात्मक उदाहरण जोड़ता हूं। आप देखेंगे कि आप ऑब्जेक्ट मैनेजर तक कैसे पहुँच सकते हैं, और Magento वर्गों के उदाहरण उत्पन्न कर सकते हैं, साथ ही Magento जुड़नार का उपयोग कर सकते हैं।
एप्लिकेशन / कोड / विक्रेता / CustomModule / नियंत्रक / आदेश / 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 / टेस्ट / एकता / नियंत्रक / आदेश / 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__
);