আমি নির্ভরশীলতা ইনজেকশন ব্যবহার করে আমার ক্লাসকে ইউনিট-টেস্টেবল করে তুলতে কাজ করছি। তবে এই শ্রেণীর কয়েকটিগুলির কাছে প্রচুর ক্লায়েন্ট রয়েছে এবং আমি এখনও নির্ভরতার মধ্যে যেতে শুরু করার জন্য তাদের সকলকে রিফেক্টর প্রস্তুত করতে প্রস্তুত নই। তাই আমি ধীরে ধীরে এটি করার চেষ্টা করছি; আপাতত ডিফল্ট নির্ভরতা বজায় রাখা, তবে তাদের পরীক্ষার জন্য ওভাররাইড করার অনুমতি দেওয়া।
আমি যে কনসিডার করছি সেগুলির একটি উপায় সমস্ত "নতুন" কলগুলি তাদের নিজস্ব পদ্ধতিতে সরিয়ে নিয়েছে, যেমন:
public MyObject createMyObject(args) {
return new MyObject(args);
}
তারপরে আমার ইউনিট পরীক্ষায়, আমি কেবল এই শ্রেণীর সাবক্লাস করতে পারি এবং তৈরি ফাংশনগুলিকে ওভাররাইড করতে পারি, সুতরাং তারা পরিবর্তে জাল বস্তু তৈরি করতে পারে।
এই একটি ভাল পন্থা? কোন অসুবিধা আছে কি?
আরও সাধারণভাবে, হার্ড-কোডেড নির্ভরতা থাকা কি ঠিক আছে, আপনি যতক্ষণ না পরীক্ষার জন্য তাদের প্রতিস্থাপন করতে পারবেন? আমি জানি পছন্দের পদ্ধতির স্পষ্টরূপে নির্মাত্রে তাদের প্রয়োজন, এবং আমি অবশেষে সেখানে যেতে চাই। তবে আমি ভাবছি এটি কোনও ভাল প্রথম পদক্ষেপ কিনা।
একটি অসুবিধা যা আমার কাছে সবেমাত্র ঘটেছিল: যদি আপনার সত্যিকারের সাবক্লাস থাকে যা আপনার পরীক্ষা করা দরকার, আপনি প্যারেন্ট ক্লাসের জন্য লিখেছেন এমন পরীক্ষার সাবক্লাসটি পুনরায় ব্যবহার করতে পারবেন না। প্রতিটি প্রকৃত সাবক্লাসের জন্য আপনাকে একটি পরীক্ষা সাবক্লাস তৈরি করতে হবে এবং এটি তৈরির ফাংশনগুলিকে ওভাররাইড করতে হবে।