RSpec-এ আপনি কাস্টম আউটপুট ফরম্যাট তৈরি করতে পারেন যাতে টেস্টের ফলাফলগুলি আপনার নির্দিষ্ট প্রয়োজন অনুযায়ী উপস্থাপিত হয়। RSpec-এ আউটপুট ফরম্যাটের ডিফল্ট সিস্টেমটি হলো ফরম্যাটার (Formatter), যা টেস্ট পাস বা ফেল সম্পর্কে তথ্য প্রদর্শন করে। তবে আপনি যদি টেস্ট ফলাফলের জন্য একটি কাস্টম আউটপুট চান, তাহলে কাস্টম ফরম্যাটার ব্যবহার করতে পারেন।
কাস্টম ফরম্যাটারের ধারণা
RSpec একটি formatter কনসেপ্ট প্রদান করে যা আউটপুটের লেআউট এবং স্টাইল কাস্টমাইজ করতে সহায়ক। আপনি আউটপুটের জন্য একটি নিজস্ব ফরম্যাটার তৈরি করে, যা আপনার টেস্ট রান করার সময় ফলাফলকে নির্দিষ্ট ফরম্যাটে দেখাতে পারে।
কাস্টম আউটপুট ফরম্যাটার তৈরি করা
একটি কাস্টম আউটপুট ফরম্যাটার তৈরি করতে, আপনাকে RSpec-এর ফরম্যাটার API ব্যবহার করতে হবে। নিচে কাস্টম আউটপুট ফরম্যাটার তৈরি করার একটি উদাহরণ দেখানো হয়েছে।
১. কাস্টম আউটপুট ফরম্যাটার ক্লাস তৈরি
প্রথমে, একটি নতুন Ruby ক্লাস তৈরি করতে হবে যা RSpec::Core::Formatters::BaseFormatter ক্লাস থেকে ইনহেরিট করবে। এই ক্লাসের মধ্যে আউটপুট প্রদর্শন করার জন্য বিভিন্ন মেথড প্রয়োগ করা হয়।
# custom_formatter.rb
require 'rspec/core/formatters/base_formatter'
class CustomFormatter < RSpec::Core::Formatters::BaseFormatter
# টেস্ট শুরু হওয়ার সময় কল হবে
def start(example_count)
output.puts "টেস্ট রান শুরু হচ্ছে: #{example_count}টি টেস্ট"
end
# প্রতিটি টেস্টের ফলাফল দেখাবে
def example_passed(passed)
output.puts "✔️ #{passed.description} সফল"
end
def example_failed(failed)
output.puts "❌ #{failed.description} ব্যর্থ"
end
# টেস্ট শেষে সার্বিক ফলাফল দেখাবে
def stop
output.puts "টেস্ট রান শেষ"
end
endএই ক্লাসে:
start: টেস্ট শুরু হওয়ার সময় মোট টেস্ট সংখ্যা দেখায়।example_passed: প্রতিটি সফল টেস্টের পরে "✔️" চিহ্ন এবং টেস্টের বর্ণনা প্রদর্শন করে।example_failed: প্রতিটি ব্যর্থ টেস্টের পরে "❌" চিহ্ন এবং ব্যর্থ টেস্টের বর্ণনা প্রদর্শন করে।stop: সব টেস্টের শেষে একটি সমাপ্তি বার্তা প্রদর্শন করে।
২. কাস্টম ফরম্যাটার ব্যবহার করা
এরপর, rspec কমান্ডে কাস্টম ফরম্যাটার ব্যবহারের জন্য এটি কনফিগার করতে হবে। আপনি এটি rspec কমান্ড লাইনের মাধ্যমে বা RSpec কনফিগারেশন ফাইলে (যেমন spec_helper.rb বা rails_helper.rb) সেটআপ করতে পারেন।
কমান্ড লাইনে ব্যবহার:
rspec --format CustomFormatterRSpec কনফিগারেশন ফাইলে ব্যবহার:
# spec/spec_helper.rb
RSpec.configure do |config|
config.add_formatter 'CustomFormatter'
endএখন, যখন আপনি rspec রান করবেন, এটি আপনার কাস্টম ফরম্যাটারের আউটপুট প্রদর্শন করবে।
কাস্টম আউটপুট ফরম্যাটারের আরও উন্নত ফিচার
- টেস্ট সময়: আপনি টেস্ট চলাকালীন সময়ও আউটপুটে যোগ করতে পারেন।
- ফলাফল স্টাইল: আপনি JSON, HTML বা অন্য কোনো ফরম্যাটে আউটপুট জেনারেট করতে পারেন।
- ফাইল আউটপুট: টেস্ট ফলাফল একটি ফাইলে রেকর্ড করতে চাইলে আউটপুটটিকে একটি ফাইলে লেখার জন্য
output.putsএর পরিবর্তেFile.openব্যবহার করতে পারেন।
উদাহরণ: টেস্ট ফলাফল JSON ফরম্যাটে আউটপুট করা
class JsonFormatter < RSpec::Core::Formatters::BaseFormatter
def start(example_count)
@results = { "total_tests" => example_count, "results" => [] }
end
def example_passed(passed)
@results["results"] << { "example" => passed.description, "status" => "passed" }
end
def example_failed(failed)
@results["results"] << { "example" => failed.description, "status" => "failed", "message" => failed.exception.message }
end
def stop
File.open("test_results.json", "w") { |f| f.write(@results.to_json) }
end
endএই কোডটি টেস্ট ফলাফল JSON ফরম্যাটে test_results.json ফাইলে সংরক্ষণ করবে।
সারাংশ
RSpec-এ কাস্টম আউটপুট ফরম্যাট তৈরি করা খুবই সহজ এবং এটি আপনাকে টেস্ট ফলাফল কাস্টমাইজ করার জন্য বিভিন্ন সুবিধা প্রদান করে। আপনি RSpec-এর ফরম্যাটার API ব্যবহার করে আপনার নিজস্ব আউটপুট ফরম্যাট তৈরি করতে পারেন, যা টেস্টের ফলাফলকে আপনার নির্দিষ্ট প্রয়োজন অনুসারে উপস্থাপন করবে।
Read more