Phalcon ফ্রেমওয়ার্কে PHPUnit ব্যবহার করে অ্যাপ্লিকেশন টেস্টিং করা একটি গুরুত্বপূর্ণ পদক্ষেপ, যা কোডের গুণমান নিশ্চিত করে এবং অ্যাপ্লিকেশনটির কার্যকারিতা নিশ্চিত করতে সহায়ক। PHPUnit হল PHP এর জন্য একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা Unit Testing, Integration Testing, এবং Functional Testing করতে ব্যবহৃত হয়।
Phalcon অ্যাপ্লিকেশন টেস্ট করতে PHPUnit ব্যবহার করা খুবই সহজ, এবং এতে আপনি অ্যাপ্লিকেশনের বিভিন্ন অংশ যেমন মডেল, কন্ট্রোলার, ভিউ, এবং রাউটিং সিস্টেম টেস্ট করতে পারেন।
PHPUnit কনফিগারেশন এবং সেটআপ
Phalcon অ্যাপ্লিকেশন টেস্ট করতে প্রথমে আপনাকে PHPUnit ইনস্টল করতে হবে। এটি আপনি Composer ব্যবহার করে ইনস্টল করতে পারেন।
১. PHPUnit ইনস্টল করা
আপনি Composer ব্যবহার করে PHPUnit ইনস্টল করতে পারেন:
composer require --dev phpunit/phpunit
এই কমান্ডটি PHPUnit আপনার প্রজেক্টে ডেভেলপমেন্ট ডিপেন্ডেন্সি হিসেবে ইনস্টল করবে।
২. PHPUnit কনফিগারেশন ফাইল তৈরি করা
আপনার প্রজেক্টের রুট ডিরেক্টরিতে একটি phpunit.xml কনফিগারেশন ফাইল তৈরি করুন। এই ফাইলের মধ্যে PHPUnit এর কনফিগারেশন নির্ধারণ করা হবে:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php">
<testsuites>
<testsuite name="Phalcon Test Suite">
<directory>./tests</directory>
</testsuite>
</testsuites>
</phpunit>
এখানে, tests/ ডিরেক্টরিতে আপনার সমস্ত টেস্ট ফাইল থাকবে।
Phalcon অ্যাপ্লিকেশন টেস্টিং শুরু করা
Phalcon অ্যাপ্লিকেশন টেস্ট করার জন্য, আপনি কনট্রোলার, মডেল, এবং অন্যান্য সিস্টেম পার্টসের জন্য টেস্ট তৈরি করতে পারেন। নীচে একটি সাধারণ উদাহরণ দেয়া হলো যেখানে একটি কন্ট্রোলার এবং মডেল টেস্ট করা হয়েছে।
১. মডেল টেস্ট
ধরা যাক, আপনি একটি Users মডেল তৈরি করেছেন, যা ডাটাবেস থেকে ইউজারের তথ্য রিট্রিভ করে। এর জন্য PHPUnit টেস্ট হবে:
use PHPUnit\Framework\TestCase;
use Phalcon\Di\FactoryDefault;
use Phalcon\Mvc\Model\Manager;
use Phalcon\Mvc\Model\Resultset\Simple;
use Phalcon\Db\Adapter\Pdo\Mysql as DbAdapter;
class UsersTest extends TestCase
{
protected function setUp(): void
{
// DI কন্টেইনার সেটআপ
$di = new FactoryDefault();
$di->setShared('db', function () {
return new DbAdapter(
[
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'test_db',
]
);
});
// Model Manager সেটআপ
$di->setShared('modelsManager', function () {
return new Manager();
});
// DI কন্টেইনার থেকে ডিফল্ট DI সেট করা
\Phalcon\Mvc\Model::setDI($di);
}
public function testFindUserById()
{
// মডেল থেকে ইউজার খোঁজা
$user = Users::findFirstById(1);
$this->assertNotNull($user);
$this->assertEquals($user->name, 'John Doe');
}
}
এখানে, testFindUserById() মেথডটি Users মডেলকে টেস্ট করছে এবং যাচাই করছে যে ID 1 এর ইউজার ডাটাবেসে রয়েছে কিনা এবং ইউজারের নাম "John Doe"।
২. কন্ট্রোলার টেস্ট
কন্ট্রোলার টেস্ট করতে, আপনাকে Phalcon\Mvc\Application এবং Phalcon\Http\Request ব্যবহার করে অ্যাপ্লিকেশন রিকোয়েস্ট ইমুলেট করতে হবে। নিচে একটি কন্ট্রোলার টেস্টের উদাহরণ দেওয়া হলো:
use PHPUnit\Framework\TestCase;
use Phalcon\Mvc\Application;
use Phalcon\Di\FactoryDefault;
use Phalcon\Http\Request;
class IndexControllerTest extends TestCase
{
protected function setUp(): void
{
// DI কন্টেইনার সেটআপ
$di = new FactoryDefault();
$di->setShared('request', function () {
return new Request();
});
// DI কন্টেইনার থেকে অ্যাপ্লিকেশন সেট করা
$application = new Application($di);
}
public function testIndexAction()
{
// অ্যাপ্লিকেশন থেকে IndexController এর indexAction কল করা
$application = new Application();
$response = $application->handle("/index/index");
$this->assertEquals(200, $response->getStatusCode());
$this->assertContains("Welcome to Phalcon", $response->getContent());
}
}
এখানে, testIndexAction() মেথডে আমরা IndexController এর indexAction টেস্ট করছি। অ্যাপ্লিকেশন রিকোয়েস্টের মাধ্যমে /index/index রাউট কল করা হচ্ছে এবং তার স্ট্যাটাস কোড ও কন্টেন্ট যাচাই করা হচ্ছে।
Phalcon অ্যাপ্লিকেশন টেস্টে Fixtures ব্যবহার করা
ফিক্সচার (Fixtures) হল ডেটাবেসের পূর্বনির্ধারিত ডেটা যা টেস্টিংয়ের আগে লোড করা হয়, যাতে টেস্টগুলো নির্দিষ্ট ডেটার উপর কাজ করতে পারে। Phalcon এ টেস্ট ফিক্সচার ব্যবহারের জন্য আপনাকে কিছু কনফিগারেশন করতে হবে।
use PHPUnit\Framework\TestCase;
use Phalcon\Mvc\Model;
use Phalcon\Di\FactoryDefault;
use Phalcon\Db\Adapter\Pdo\Mysql as DbAdapter;
class DatabaseTestCase extends TestCase
{
protected function setUp(): void
{
// DI কন্টেইনার সেটআপ
$di = new FactoryDefault();
$di->setShared('db', function () {
return new DbAdapter(
[
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'test_db',
]
);
});
Model::setDI($di);
}
public function testUserFixture()
{
// ফিক্সচার ডেটা দিয়ে টেস্ট শুরু করা
$this->assertEquals(1, Users::count());
}
}
এখানে, setUp() মেথডে ডাটাবেস কনফিগারেশন সেট করা হয়েছে, এবং testUserFixture() মেথডে ফিক্সচার ডেটা দিয়ে Users::count() যাচাই করা হচ্ছে।
সারাংশ
PHPUnit ব্যবহার করে Phalcon অ্যাপ্লিকেশন টেস্টিং ডেভেলপারদের কোডের গুণমান নিশ্চিত করতে সহায়ক। মডেল, কন্ট্রোলার এবং অন্যান্য অংশগুলোর জন্য Unit Test তৈরি করা যায়। Phalcon এ DI কনটেইনার এবং Phalcon\Http\Request ব্যবহার করে সহজেই কন্ট্রোলার টেস্টিং করা যায়। Fixtures ব্যবহার করে ডাটাবেসের পূর্বনির্ধারিত ডেটার সাথে টেস্ট করা সম্ভব। PHPUnit এর মাধ্যমে Phalcon অ্যাপ্লিকেশন টেস্টিং আপনার অ্যাপ্লিকেশনকে আরও শক্তিশালী এবং নির্ভরযোগ্য করে তোলে।
Read more