PHPUnit একটি জনপ্রিয় PHP টেস্টিং ফ্রেমওয়ার্ক, যা Magento মডিউল বা কোডের ইউনিট টেস্ট করার জন্য ব্যবহৃত হয়। PHPUnit ব্যবহার করে আপনি আপনার মডিউল বা কোডের ছোট ছোট ইউনিট বা ফাংশন পরীক্ষা করতে পারেন, যাতে সেগুলি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করা যায়। এটি ডেভেলপারদের কোডের বাগ চিহ্নিত করতে এবং কোডের গুণগত মান বজায় রাখতে সহায়ক।
এখানে, আমরা PHPUnit ব্যবহার করে Magento মডিউল টেস্ট করার প্রক্রিয়া বিস্তারিতভাবে আলোচনা করব।
১. PHPUnit কনফিগারেশন
Magento 2 তে PHPUnit ব্যবহার করার জন্য, আপনার সিস্টেমে PHPUnit ইন্সটল এবং কনফিগার করা থাকতে হবে। ম্যাজেন্টো সাধারণত PHPUnit টেস্টিং ফ্রেমওয়ার্ক কনফিগারেশন এবং প্রয়োজনীয় ফাইল সরবরাহ করে, তবে কখনও কখনও আপনাকে কিছু অতিরিক্ত সেটিংস করতে হতে পারে।
১.১. PHPUnit ইনস্টল করা
Magento 2 তে PHPUnit ব্যবহার করার জন্য আপনার PHP পরিবেশে PHPUnit ইনস্টল করতে হবে। আপনি নিচের কমান্ডের মাধ্যমে এটি ইনস্টল করতে পারেন:
composer require --dev phpunit/phpunit ^9.0
এটি composer.json ফাইলে PHPUnit-এর ডিপেন্ডেন্সি যোগ করবে এবং আপনার প্রকল্পের জন্য PHPUnit ইনস্টল করবে।
১.২. PHPUnit কনফিগারেশন ফাইল তৈরি করা
Magento 2 প্রজেক্টে একটি phpunit.xml.dist ফাইল থাকে, যা PHPUnit কনফিগারেশন ফাইল। আপনি যদি এটিকে কাস্টমাইজ করতে চান, তবে ফাইলটি সম্পাদনা করতে পারেন।
<?xml version="1.0" encoding="UTF-8" ?>
<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" verbose="true">
<testsuites>
<testsuite name="Magento Test Suite">
<directory suffix="Test.php">app/code</directory>
</testsuite>
</testsuites>
</phpunit>
এই কনফিগারেশন ফাইলের মাধ্যমে Magento এর app/code ডিরেক্টরিতে থাকা সমস্ত টেস্ট ক্লাস স্বয়ংক্রিয়ভাবে পরীক্ষা করা হবে।
২. Magento মডিউল টেস্টিং তৈরি করা
আপনার মডিউলের জন্য PHPUnit টেস্ট তৈরি করার জন্য কিছু সাধারণ পদক্ষেপ অনুসরণ করতে হবে:
২.১. Test Class তৈরি করা
Magento মডিউলের জন্য একটি টেস্ট ক্লাস তৈরি করতে, আপনাকে Test নামের একটি ফোল্ডার তৈরি করতে হবে, যা আপনার মডিউলের মধ্যে থাকবে। উদাহরণস্বরূপ, যদি আপনি Custom_Module মডিউল তৈরি করে থাকেন, তবে এটি এমন দেখতে পারে:
app/code/Custom/Module/Test/Unit/Model/MyModelTest.php
এখন, একটি টেস্ট ক্লাস তৈরি করুন:
<?php
namespace Custom\Module\Test\Unit\Model;
use PHPUnit\Framework\TestCase;
use Custom\Module\Model\MyModel;
class MyModelTest extends TestCase
{
protected $myModel;
protected function setUp(): void
{
// MyModel mock তৈরি করুন (যদি প্রয়োজন হয়)
$this->myModel = new MyModel();
}
public function testSomeFunction()
{
// টেস্ট করা ফাংশন কল
$result = $this->myModel->someFunction();
// পরীক্ষার জন্য assertion ব্যবহার করুন
$this->assertEquals('Expected Value', $result);
}
}
এখানে:
- setUp() মেথডটি টেস্ট রান হওয়ার আগে প্রয়োজনীয় অবজেক্ট তৈরি করতে ব্যবহৃত হয়।
- testSomeFunction() মেথডে আপনার কোডের নির্দিষ্ট ফাংশন পরীক্ষা করা হয় এবং assertEquals() মেথডটি ব্যবহার করে আপনি টেস্টের ফলাফল যাচাই করেন।
২.২. Mocking ব্যবহার করা
অনেক সময়, আপনি যদি বাইরের ডিপেন্ডেন্সি বা সার্ভিসের ওপর নির্ভরশীল ফাংশন পরীক্ষা করতে চান, তবে আপনি mock objects ব্যবহার করবেন। উদাহরণস্বরূপ, যদি আপনার মডিউল কোনো API বা ডাটাবেস সার্ভিসের ওপর নির্ভরশীল থাকে, তবে আপনি সেই সার্ভিসগুলিকে মক করতে পারেন।
$mockService = $this->createMock(\Custom\Module\Service\SomeService::class);
$mockService->method('getData')->willReturn('Mocked Data');
$myModel = new MyModel($mockService);
এখানে, SomeService ক্লাসের getData() মেথড মক করা হয়েছে, যাতে এটি "Mocked Data" রিটার্ন করে।
৩. PHPUnit টেস্ট রান করা
PHPUnit টেস্ট রান করতে, আপনি নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:
php vendor/bin/phpunit --configuration phpunit.xml.dist
এটি PHPUnit টেস্ট রান করবে এবং আপনার Magento মডিউলের সমস্ত টেস্ট পরীক্ষা করবে।
আপনি যদি একটি নির্দিষ্ট টেস্ট ক্লাস রান করতে চান, তবে এটি করতে পারেন:
php vendor/bin/phpunit app/code/Custom/Module/Test/Unit/Model/MyModelTest.php
এটি শুধু নির্দিষ্ট টেস্ট ক্লাসটি রান করবে।
৪. PHPUnit Assertion Types
PHPUnit তে assertion ব্যবহৃত হয় যাতে টেস্টের ফলাফল যাচাই করা যায়। এখানে কিছু সাধারণ assertion উল্লেখ করা হলো:
- assertEquals($expected, $actual): পরীক্ষা করবে যে
$expectedএবং$actualমান সমান কিনা। - assertTrue($condition): পরীক্ষা করবে যে
$conditionসত্য কিনা। - assertFalse($condition): পরীক্ষা করবে যে
$conditionমিথ্যা কিনা। - assertInstanceOf($expectedClass, $actualObject): পরীক্ষা করবে যে
$actualObject$expectedClassএর একটি ইনস্ট্যান্স কিনা।
৫. Test Coverage (টেস্ট কভারেজ)
PHPUnit ব্যবহার করে আপনি আপনার কোডের টেস্ট কভারেজও পরীক্ষা করতে পারেন। টেস্ট কভারেজ এটি দেখায় কতটুকু কোড আপনার টেস্ট কাভার করছে।
Test Coverage Report তৈরি করতে:
php vendor/bin/phpunit --coverage-html /path/to/report
এটি একটি HTML রিপোর্ট তৈরি করবে যা আপনার কোডের কতটুকু অংশ টেস্ট করা হয়েছে তা দেখাবে।
সারাংশ
PHPUnit ব্যবহার করে Magento মডিউল টেস্ট করা একটি গুরুত্বপূর্ণ প্রক্রিয়া যা আপনার কোডের গুণমান এবং কার্যকারিতা নিশ্চিত করতে সহায়ক। আপনি টেস্ট ক্লাস তৈরি করতে পারেন, mock objects ব্যবহার করতে পারেন এবং PHPUnit assertions ব্যবহার করে আপনার কোডের ফাংশনালিটি পরীক্ষা করতে পারেন। PHPUnit টেস্ট রান করার মাধ্যমে আপনি আপনার মডিউলের কোডের মধ্যে সম্ভাব্য বাগ চিহ্নিত করতে এবং তা ঠিক করতে পারেন।
Read more