কিছু লোক বজায় রাখেন যে ইন্টিগ্রেশন পরীক্ষাগুলি সব ধরণের খারাপ এবং ভুল bad সবকিছুই ইউনিট-টেস্ট করা আবশ্যক, যার অর্থ আপনার নির্ভরতা উপহাস করতে হবে; একটি বিকল্প যা বিভিন্ন কারণে, আমি সবসময় পছন্দ করি না।
আমি দেখতে পেয়েছি, কিছু ক্ষেত্রে, একটি ইউনিট-পরীক্ষা কেবল কিছুই প্রমাণ করে না।
উদাহরণস্বরূপ নিম্নলিখিত (তুচ্ছ, নিষ্পাপ) সংগ্রহস্থল বাস্তবায়ন (পিএইচপি-তে) নেওয়া যাক:
class ProductRepository
{
private $db;
public function __construct(ConnectionInterface $db) {
$this->db = $db;
}
public function findByKeyword($keyword) {
// this might have a query builder, keyword processing, etc. - this is
// a totally naive example just to illustrate the DB dependency, mkay?
return $this->db->fetch("SELECT * FROM products p"
. " WHERE p.name LIKE :keyword", ['keyword' => $keyword]);
}
}
ধরা যাক আমি একটি পরীক্ষায় প্রমাণ করতে চাই যে এই সংগ্রহস্থলটি আসলে প্রদত্ত বিভিন্ন কীওয়ার্ডের সাথে মিল রেখে পণ্যগুলি খুঁজে পেতে পারে।
একটি প্রকৃত সংযোগের অবজেক্টের সাথে সংহতকরণের সংক্ষিপ্ততা, আমি কীভাবে জানতে পারি যে এটি আসলে বাস্তব প্রশ্ন উত্পন্ন করছে - এবং সেই প্রশ্নগুলি আসলে আমার মনে হয় তারা কি করে?
যদি আমাকে ইউনিট-টেস্টে সংযোগের বিষয়টিকে উপহাস করতে হয় তবে আমি কেবল "এটি প্রত্যাশিত ক্যোয়ারী উত্পন্ন করে" এর মতো জিনিসগুলি প্রমাণ করতে পারি - তবে এর অর্থ এই নয় যে এটি আসলে কাজ করবে ... অর্থাৎ সম্ভবত এটি ক্যোয়ারী তৈরি করছে আমি প্রত্যাশিত ছিলাম, তবে সম্ভবত এই ক্যোয়ারী আমার মনে হয় যা তা করে না।
অন্য কথায়, আমি একটি পরীক্ষা করে তোলে উত্পন্ন QUERY সম্বন্ধে গবেষকেরা, মান ছাড়া মূলত, কারণ এটি পরীক্ষার কীভাবে মত মনে findByKeyword()
পদ্ধতি ছিল বাস্তবায়িত , কিন্তু যে প্রমাণ নয় যে এটা আসলে কাজ করে ।
এই সমস্যাটি কেবল সংগ্রহস্থল বা ডাটাবেস ইন্টিগ্রেশনের মধ্যে সীমাবদ্ধ নয় - এটি প্রচুর ক্ষেত্রে প্রযোজ্য বলে মনে হয়, যেখানে মক (টেস্ট-ডাবল) ব্যবহারের বিষয়ে দৃser় বক্তব্য রাখার ফলে কেবল কীভাবে প্রয়োগ করা হয় তা প্রমাণিত হয়, তারা যাচ্ছেন কিনা তা নয় not আসলে কাজ।
আপনি এই জাতীয় পরিস্থিতিতে কীভাবে মোকাবিলা করবেন?
ইন্টিগ্রেশন টেস্টগুলি কি এই জাতীয় ক্ষেত্রে সত্যই "খারাপ"?
আমি এই পয়েন্টটি পেয়েছি যে একটি জিনিস পরীক্ষা করা আরও ভাল, এবং আমি আরও বুঝতে পারি যে কেন ইন্টিগ্রেশন টেস্টিংয়ের ফলে অগণিত কোড-পাথ তৈরি হয়, যার সবগুলিই পরীক্ষা করা যায় না - তবে কোনও পরিষেবার ক্ষেত্রে (যেমন একটি সংগ্রহস্থল) যার একমাত্র উদ্দেশ্য is অন্য উপাদানটির সাথে ইন্টারঅ্যাক্ট করার জন্য, আপনি কীভাবে সত্যই একীকরণের পরীক্ষা না করে কিছু পরীক্ষা করতে পারেন?