Minitest কি?
Minitest হল একটি রুবি টেস্টিং লাইব্রেরি , এটি আপনাকে আপনার কোড টিডিডি শৈলীর জন্য পরীক্ষা লিখতে দেয়।
এটি Rails এবং DHH-এর পছন্দের জন্য ডিফল্ট টেস্টিং ফ্রেমওয়ার্ক।
কিছু লোক এটিকে এর সরলতার জন্য পছন্দ করে এবং এটির প্রধান বিকল্প (RSpec) এর তুলনায় কত কম কোড রয়েছে।
যেমন আপনি এই ছবিতে দেখতে পাচ্ছেন :

এখন এই পোস্টটি আপনার কোনটি বেছে নেওয়া উচিত বা কোনটি 'ভাল' তা নিয়ে নয়৷
৷এই পোস্টটি কিভাবে Minitest কাজ করে .
আপনি যদি ভাবছেন:আপনি যেটি সবচেয়ে ভালো চান তা ব্যবহার করুন, তবে আপনার এখনও উভয়ের সাথেই পরিচিত হওয়া উচিত 🙂
আপনি যদি জিনিসগুলি কীভাবে কাজ করে তা শিখতে চান তবে আপনি এই পোস্টটি উপভোগ করবেন…
যাই হোক না কেন টেস্টিং লাইব্রেরি আপনার প্রিয়!
আসুন দেখে নেই হুডের নিচে
লোকেরা যে জিনিসগুলিকে সুপারিশ করে (আমি সহ) তার মধ্যে একটি হল সোর্স কোড পড়া কারণ জিনিসগুলি কীভাবে কাজ করে তা শেখার এটি একটি দুর্দান্ত উপায় এবং এটি কিছু নতুন রুবি কৌশল বেছে নেওয়ার একটি দুর্দান্ত উপায় যা আপনি আগে দেখেননি৷
Minitest এর সাথে আমি এটিই করেছি এবং আমি যা শিখেছি তা আপনাদের সাথে শেয়ার করতে যাচ্ছি।
আসুন কিছু আসল পরীক্ষার কোড দিয়ে শুরু করি যাতে আমরা আলোচনা করতে পারি যে এটি কীভাবে Minitest জিনিসগুলি করে তার সাথে কীভাবে সম্পর্কিত।
class Thingy < Minitest::Test
def test_it_works
assert_equal 1, 1
end
end
তাহলে কিভাবে Minitest এই পরীক্ষার পদ্ধতিগুলি খুঁজে পায় (যেমন test_it_works ) এবং চালান?
উত্তর হল একটু মেটাপ্রোগ্রামিং 'ম্যাজিক':
def self.methods_matching(re) public_instance_methods(true).grep(re).map(&:to_s) end
এটি আসে Runnable থেকে ক্লাস যা lib/minitest.rb এ সংজ্ঞায়িত করা হয়েছে . এই কোডটি বর্তমান ক্লাসের জন্য সমস্ত দৃষ্টান্ত পদ্ধতি খুঁজে পায় এবং একটি রেগুলার এক্সপ্রেশনের সাথে মেলে এমনগুলিকে নির্বাচন করে৷
তাই যদি আপনি methods_matching(/^test_/) কল করেন আপনি test_ দিয়ে শুরু হওয়া সমস্ত পদ্ধতির নামের সাথে একটি অ্যারে পাবেন .
কিভাবে মিনিটেস্ট কাজ করে
Minitest এই test_ খুঁজে পায় পদ্ধতি, তারপর এটি তাদের কল করে।
এটি lib/minitest/test.rb এ ঘটে ফাইল (এবং আরো নির্দিষ্ট হতে, runnable_methods-এ পদ্ধতি, যা এলোমেলো ক্রমে পদ্ধতির তালিকা প্রদান করে।
গুরুত্বপূর্ণ পয়েন্ট :
এটি কাজ করে কারণ Minitest::Test Runnable এর একটি সাবক্লাস .
ধাঁধার চূড়ান্ত অংশ হল run Runnable-এ ক্লাস পদ্ধতি , যা কিছু অতিরিক্ত ফিল্টারিং করে এবং তারপর run_one_method কল করে প্রতিটি পদ্ধতির নাম এবং একটি রিপোর্টার অবজেক্ট সহ।
এখানে কোডটি আছে :
filtered_methods.each do |method_name| run_one_method self, method_name, reporter end
এবং এটি শেষ পর্যন্ত run কল করে Minitest::Test-এ ইনস্ট্যান্স পদ্ধতি :
capture_exceptions do before_setup; setup; after_setup self.send self.name end
পাঠান হল একটি মেটাপ্রোগ্রামিং পদ্ধতি যা আপনাকে স্ট্রিং বা প্রতীক ব্যবহার করে যেকোনো বস্তুতে অন্য পদ্ধতিতে কল করতে দেয়।
capture_exceptions আপনার কোড দ্বারা উত্থাপিত পরীক্ষার ব্যর্থতা এবং ব্যতিক্রমগুলি রেকর্ড করতে ব্লক ব্যবহার করা হয়৷
def capture_exceptions # :nodoc: yield rescue *PASSTHROUGH_EXCEPTIONS raise rescue Assertion => e self.failures << e rescue Exception => e self.failures << UnexpectedError.new(e) end
এইভাবে আমি কোড পড়তে পছন্দ করি, আপনি যে কোডটি পড়ছেন তার একটি দিক বা বৈশিষ্ট্যের উপর ফোকাস করুন এবং তারপরে পেঁয়াজের মতো স্তরগুলি খোসা ছাড়তে থাকুন।
আপনি যদি এই ফলন কীওয়ার্ডের মত কিছু মানে কি জানেন না, তাহলে এটি দেখুন।
এটা শেখার প্রক্রিয়ার অংশ!
উপসংহার
এই পোস্টে আপনি শিখেছেন কিভাবে Minitest আপনার পরীক্ষার পদ্ধতি খুঁজে পেতে এবং তাদের কল করতে মেটাপ্রোগ্রামিং ব্যবহার করে। আপনি আরও শিখেছেন কিভাবে পরীক্ষার ত্রুটি এবং ব্যতিক্রমগুলি রিপোর্ট করার জন্য একটি অ্যারেতে ক্যাপচার করা হয়৷
৷আপনি কি এই ধরনের "কোড বিশ্লেষণ করা" নিবন্ধ পছন্দ করেন?
আমাকে কমেন্টে জানান 🙂
এছাড়াও আপনার প্রিয় সামাজিক নেটওয়ার্কগুলিতে এটি ভাগ করতে ভুলবেন না৷ এবং নীচের আমার নিউজলেটারে সদস্যতা নিন যদি আপনি ইতিমধ্যে আপনার মতো 7000+ রুবি ডেভেলপারদের অংশ না হন যারা তাদের দক্ষতা উন্নত করতে চাইছেন!