আপনি না। এবং আপনার নিজের উদাহরণ কেন না তা দেখানোর জন্য একটি নিখুঁত is
আপনি ঠিক ইমেল প্রেরণ করতে চান? সুতরাং আপনি এটি CommunicationUtilities
স্থির সঙ্গে কোথাও একটি স্ট্যাটিক বর্গ তৈরি SendEmail()
। আপনি এমন কিছু শ্রেণি থেকে এই পদ্ধতিটি ব্যবহার করেন যা গুচ্ছ জিনিসগুলি করে, উদাহরণস্বরূপ কোনও ব্যবহারকারীর পাসওয়ার্ড পুনরায় সেট করে এবং ইমেলের মাধ্যমে তাকে একটি নতুন পাঠায়। পারফেক্ট।
এখন, আপনি যদি নিজের ক্লাসটি ইউনিট-টেস্ট করতে চান তবে কি হবে? আপনি পারবেন না, কারণ যতবার আপনি পাসওয়ার্ডটি পুনরায় সেট করে সেই পদ্ধতিটি পরীক্ষা করতে চান, এটি ডাটাবেস পরিবর্তন করে (যা ইউনিট পরীক্ষার জন্য উপযুক্ত নয়) এবং তদুপরি একটি ইমেল প্রেরণ করে (যা আরও খারাপ)।
আপনি ইনভার্সন অফ কন্ট্রোল সম্পর্কে পড়ে থাকতে পারেন, যা ইউনিট পরীক্ষাকে আরও সহজ করার সুবিধা অর্জন করে। আইওসি সম্পর্কিত নিবন্ধগুলি আপনাকে ব্যাখ্যা করবে যে এরকম কিছু করার পরিবর্তে:
void ResetPassword(UserIdentifier userId)
{
...
new MailSender().SendPasswordReset(userMail, newPassword);
}
তুমি কর:
void ResetPassword(IMailSender sender, UserIdentifier userId)
{
...
sender.SendPasswordReset(userMail, newPassword);
}
যা মক এবং স্টাব ব্যবহার করতে দেয়।
আপনার আইওসি প্রয়োগ করার চেষ্টা করুন CommunicationUtilities
। ঠিক আছে, আপনি পারবেন না। এ কারণেই এটি ভেঙে গেছে।