স্থাপন
যেহেতু Magento 1 বাক্সের বাইরে সুরকার ব্যবহার করে না, আমি মনে করি যদি আপনি সুরকার ব্যবহার phpunit ইনস্টল বা শুধু ডাউনলোড এটি একটি বড় পার্থক্য তোলে না phar সংস্করণ।
আপনি যদি ইতিমধ্যে আপনার সাইটে অন্য তৃতীয় পক্ষের মডিউল বা লাইব্রেরি পরিচালনা করতে সুরকার ব্যবহার করেন, তবে সুরকার সম্ভবত সবচেয়ে সার্থক হন। আপনি যদি পিএইচপি 7 ব্যবহার না করেন তবে আপনি phpunit এর পুরানো সংস্করণে সীমাবদ্ধ থাকবেন (এ কারণেই আমি উপরের 4.8 সংস্করণের সাথে লিঙ্ক করেছি)।
ইন্টিগ্রেশন টেস্ট বনাম / এবং / অথবা ইউনিট টেস্ট
যেহেতু ম্যাজেন্টো 1 এমন একটি ভারী ওজনের অ্যাপ্লিকেশন, তাই Phpunit বুটস্ট্র্যাপকে একীকরণের জন্য এবং ইউনিট পরীক্ষার জন্য একটিতে পৃথক করা অর্থপূর্ণ।
ইউনিট পরীক্ষার বুটস্ট্র্যাপটি কেবল অটোলোডারকে আরম্ভ করতে হবে, যখন ইন্টিগ্রেশন টেস্ট বুটস্ট্র্যাপের জন্য কনফিগারেশন লোডিং এবং ডিবি সংযোগ সহ পুরো অ্যাপ্লিকেশন পরিবেশের সূচনা করতে হবে।
এজন্য যে ম্যাজেন্টোতে ইন্টিগ্রেশন পরীক্ষাগুলি অনেক ধীর হয়ে পরে ইউনিট পরীক্ষাগুলি চালায়। (আরও বেশি তাই অন্য অ্যাপ্লিকেশনগুলিতে)।
বুটস্ট্র্যাপিং ম্যাজেন্টোকে ফোপুনিতে
ম্যাজেন্টোর অটলয়েডার পিএসআর -0 এর সাথে সামঞ্জস্যপূর্ণ নয় কারণ এটি কোনও ব্যতিক্রম অবস্থিত ফাইলটি খুঁজে না পাওয়া যদি একটি ব্যতিক্রম ছুঁড়ে দেয় This এটি class_exists
phpunit এর কিছু ব্যবহার ভেঙে দেয়। সম্ভাব্য কয়েকটি (যদি হ্যাকি) ওয়ার্কআউন্ড রয়েছে:
\Varien_Autoload::autoload()
ভিতরে ছুঁড়ে দেওয়া ব্যতিক্রম উপেক্ষা করে কোনও সাজসজ্জারের মোড়কে ম্যাগেন্টো অটলয়েডারকে নিবন্ধভুক্ত করুন এবং একটি নতুন অটোলোডার হিসাবে মোড়কটিকে নিবন্ধ করুন। এটি তৃতীয় পক্ষের লাইব্রেরিগুলির সাথে দ্বন্দ্বের কম সম্ভাবনা রয়েছে যারা অটোলয়েডারদের নিবন্ধন করে এবং একটি নির্দিষ্ট অটোলোডার আদেশের উপর নির্ভর করে।
- Magento 1 এ নির্মিত একটি মোড়ানো একটি কাস্টম ত্রুটি হ্যান্ডলার ব্যবহার করুন। কাস্টম ত্রুটি হ্যান্ডলারগুলি Magento অটোলোডার দ্বারা চালিত ত্রুটিগুলি গ্রাস করে। এটিই সমাধান যা রাফেলের পরীক্ষার কাঠামোটি ব্যবহার করে । এটি অন্যান্য তৃতীয় পক্ষের এক্সটেনশনের সাথে সর্বাধিক সামঞ্জস্যপূর্ণ বলে মনে হচ্ছে।
\Varien_Autoload::autoload()
ফাইলটি উপস্থিত না থাকলে ত্রুটি ছুঁড়ে না দেওয়ার জন্য অন্তর্ভুক্ত পাথ হ্যাক ব্যবহার করুন । এটি বেশ কয়েকটি মডিউলগুলির সাথে দ্বন্দ্ব করে যা একই শ্রেণিকে ওভাররাইড করে। আমি এই পদ্ধতির নিজেকে ব্যবহার করি না।
$_SESSON = []
বুটস্ট্র্যাপে সহজভাবে সেট করা পরীক্ষার সময় সেশন থেকে ত্রুটিগুলি এড়ানোর জন্য ।
এর মাধ্যমে একটি কাস্টম প্রতিক্রিয়া অবজেক্ট সেট করুন Mage::app()->setResponse($testResponse)
যা আসলটি প্রসারিত করে তবে আউটপুট বা শিরোনাম প্রেরণ করে না।
ইন্টিগ্রেশন টেস্টগুলির মধ্যে ম্যাজেন্টোকে পুনরায় পুনঃনির্মাণ করতে যা রানটাইমের স্থিতি পুরোপুরি পরিবর্তন করে, ব্যবহার করুন Mage::reset(); Mage::app()
। নোট করুন যে এর পরে ত্রুটি হ্যান্ডলারটি আবার সজ্জিত করতে হবে।
রাজধানী
ডিবি রাজধানী আমি চোকান পদ্ধতিতে নিয়মিত মডেল ব্যবহার করতে রাজধানী তৈরি করতে, যেমন ঝোঁক createSimpleProduct($sku)
। যেমন রাফেল বলেছিলেন, ব্যবহার setUp()
এবং tearDown()
পরীক্ষাটি এমন একটি লেনদেনের মধ্যে মোড়ানোর জন্য যা পরীক্ষার পরে ফিরে আসে (উদাহরণস্বরূপ Mage::getSingleton('core/resource')->getConnection('default_setup')->beginTransaction()
)।
দোকান কনফিগারেশন রাজধানী জন্য, আমি ব্যবহার ইন-মেমোরি শুধুমাত্র রাজধানী সেট আপ করার ঝোঁক Mage::app()->getStore()->setConfig($path, $value)
।
EcomDev_PHPUnit
এক্সটেনশন এছাড়াও yaml ফাইল ব্যবহার ডিবি রাজধানী তৈরি করার বিকল্পও, কিন্তু নিজের জন্য আমি ঐ কঠিন মডেল শ্রেণীর ব্যবহার করে নির্মিত রাজধানী তুলনায় বজায় রাখার জন্য এটি। YMMV।
টেস্ট দ্বিগুণ
রেজিস্ট্রি মাধ্যমে তৈরি করা অবজেক্টের জন্য পরীক্ষা ডাবলস উদ্বুদ্ধ করতে ব্যবহার করা যেতে পারে Mage::getSingleton()
, Mage::getResourceSingleton()
এবং Mage::helper()
।
কিছু অন্যান্য কেন্দ্রীয় অবজেক্ট সেট করা যেতে পারে Mage::app()
(যেমন অনুরোধ)। পরীক্ষাগুলির
মাধ্যমে Mage::getModel()
বা এর Mage::getResourceModel()
সাথে তৈরি ক্লাসগুলি প্রতিস্থাপন করতে , একটি কাস্টম কনফিগার অবজেক্ট র্যাপার ব্যবহার করতে হবে। কীভাবে এটি সম্পাদন করা যায় তা রাফেলের পরীক্ষার কাঠামোর এই উদাহরণটি দেখুন ।
সারসংক্ষেপ
একবার ম্যাজেন্টো বুটস্ট্র্যাপ হয়ে গেলে, অনেক কিছুই বরং দুর্দান্তভাবে পরীক্ষা করা যায়। মূল কোডটি যদিও ব্যবহার করে প্রচুর পরিমাণে পদ্ধতি ব্যবহার করে তবে গভীর মক তৈরির জন্য প্রস্তুত থাকুন।
যদিও সেটআপটি হ্যাকিযুক্ত, এটি ভালভাবে কাজ করে এবং আমি দেখতে পাই যে পরীক্ষাগুলি আমাকে প্রচুর আত্মবিশ্বাস এবং মান দেয়, একটি সিম্ফনি অ্যাপ্লিকেশনের জন্য একটি পরীক্ষার স্যুটের সাথে তুলনীয়।