Mocks এবং Stubs এর মৌলিক ধারণা

Mocks এবং Stubs (মকস এবং স্টাবস) - আরএসপেক (RSpec) - Computer Programming

332

Mocks এবং Stubs হল বাহ্যিক নির্ভরশীলতা বা ফাংশনাল অংশের অনুকরণ (mocking) এর দুটি গুরুত্বপূর্ণ উপাদান যা RSpec এবং অন্যান্য টেস্টিং ফ্রেমওয়ার্কে ব্যবহৃত হয়। এগুলি মূলত ডিপেনডেন্সি ইনজেকশনইউনিট টেস্টিং এর ক্ষেত্রে সাহায্য করে, যেখানে বাহ্যিক সিস্টেম (যেমন ডাটাবেস, API কল, বা ফাইল সিস্টেম) সরাসরি টেস্টের অংশ না হয়ে, মক বা স্টাব করা হয়।

তাদের মূল উদ্দেশ্য হল টেস্টিং পরিবেশে নির্দিষ্ট কিছু কন্ডিশন তৈরি করা, যাতে কোডের লজিক সহজে পরীক্ষা করা যায়।


১. Mocks (মক)

Mock হল এমন একটি অবজেক্ট বা ফাংশন যা অনুকরণ করে একটি নির্দিষ্ট বাহ্যিক সিস্টেম বা উপাদানকে। যখন কোন নির্দিষ্ট অবজেক্ট বা মেথডের আচরণ পরীক্ষিত হতে হয়, তখন মক ব্যবহার করা হয়। মক ব্যবহারের সময়, আপনি বিশেষভাবে সেট করেন যে মক করা অবজেক্টটি কিভাবে আচরণ করবে, এবং টেস্ট রান করার সময় এটি সেই আচরণ অনুসরণ করবে।

মৌলিক বৈশিষ্ট্য:

  • অভ্যন্তরীণ আচরণ নির্ধারণ করা হয়।
  • ফাংশন কলের প্রত্যাশা করা হয়, অর্থাৎ, কেমন কল আসবে এবং কতবার আসবে।
  • যদি কোনো কল প্রত্যাশিত না হয়, তবে এটি টেস্টের ব্যর্থতা ঘটায়।

উদাহরণ:

class User
  def send_email
    # এটি আসল মেইল সিস্টেমকে কল করবে
  end
end

describe User do
  it "মেইল পাঠানোর জন্য send_email মেথড কল করবে" do
    user = double("User")  # মক অবজেক্ট তৈরি
    allow(user).to receive(:send_email)  # মক মেথড
    user.send_email
    expect(user).to have_received(:send_email)  # প্রত্যাশিত কলের জন্য পরীক্ষা
  end
end

এখানে, send_email মেথডটি double দ্বারা মক করা হয়েছে এবং have_received Matcher দিয়ে যাচাই করা হয়েছে।


২. Stubs (স্টাব)

Stub হলো এমন একটি অবজেক্ট বা মেথড যা কেবলমাত্র নির্দিষ্ট ফলাফল প্রদান করে, কিন্তু কোনো নির্দিষ্ট কার্যক্রম (behaviour) সম্পাদন না করে। স্টাব সাধারণত ফাংশন/মেথডের আউটপুট কন্ট্রোল করতে ব্যবহৃত হয়, যাতে টেস্টের সময় নির্দিষ্ট ফলাফল মক করা যায়। এটি কোডের বাইরে কোনো বাহ্যিক সিস্টেমে (যেমন, ডাটাবেস বা API) কল না করে, একটি নির্দিষ্ট ফলাফল ফেরত দেয়।

মৌলিক বৈশিষ্ট্য:

  • ফলাফল বা আউটপুট নির্ধারণ করা হয়, কিন্তু কার্যকলাপের আচরণ নয়।
  • বাহ্যিক কল বা প্রক্রিয়া না চালিয়েও, শুধুমাত্র ফলাফল প্রদান করা হয়।
  • প্রত্যাশিত আউটপুট প্রদান করা হয়, তবে কোনো কার্যকলাপ বা অবস্থা পরীক্ষা করা হয় না।

উদাহরণ:

class Calculator
  def add(a, b)
    a + b
  end
end

describe Calculator do
  it "যোগফল প্রদান করবে" do
    calc = double("Calculator")
    allow(calc).to receive(:add).with(2, 3).and_return(5)  # স্টাব মেথড
    result = calc.add(2, 3)
    expect(result).to eq(5)  # স্টাব ফলাফল যাচাই
  end
end

এখানে, add মেথডটিকে স্টাব করা হয়েছে এবং withand_return দ্বারা নির্দিষ্ট আউটপুট প্রদান করা হয়েছে।


Mocks এবং Stubs এর মধ্যে পার্থক্য

বৈশিষ্ট্যMocksStubs
প্রধান লক্ষ্যকলের প্রত্যাশা পরীক্ষা করানির্দিষ্ট আউটপুট প্রদান করা
ব্যবহারআচরণ যাচাই করা (কতবার কল হয়েছে)নির্দিষ্ট আউটপুট প্রদান করা
পরীক্ষাকলের প্রতিক্রিয়া ও আচরণ পরীক্ষাশুধুমাত্র আউটপুট পরীক্ষা করা
ভুল হলেযদি কল প্রত্যাশিত না হয়, তাহলে টেস্ট ব্যর্থ হয়যদি ফলাফল সঠিক না হয়, তাহলে টেস্ট ব্যর্থ হয়

সারাংশ

Mocks এবং Stubs হল টেস্টিং টুলস যা বাহ্যিক নির্ভরশীলতাগুলিকে মক বা স্টাব করতে সাহায্য করে। Mocks ব্যবহার করা হয় যখন নির্দিষ্ট আচরণ বা কল পরীক্ষা করতে হয় এবং Stubs ব্যবহার করা হয় যখন নির্দিষ্ট আউটপুট প্রদান করতে হয়। এগুলি ডেভেলপারদের তাদের কোডের লজিক পরীক্ষা করতে সাহায্য করে, বাহ্যিক সিস্টেম বা উপাদানগুলোকে টেস্টের বাইরে রেখে।

Content added By
Promotion

Are you sure to start over?

Loading...