RSpec টেস্টিংয়ের সময় যদি কোনো টেস্ট ফেইল হয় বা কোডের আচরণ সঠিক না হয়, তবে debugging করতে সহায়ক কিছু debugging statements ব্যবহার করা হতে পারে। এগুলি আপনাকে টেস্ট কেসের মধ্যে কোথায় সমস্যা হচ্ছে তা সনাক্ত করতে সাহায্য করে। কিছু সাধারণ debugging টেকনিক রয়েছে, যা আপনি আপনার RSpec টেস্ট কেসে ব্যবহার করতে পারেন।
১. puts বা p ব্যবহার করা
এটি সবচেয়ে সাধারণ এবং সহজ পদ্ধতি। puts বা p ব্যবহার করে আপনি কনসোলে কিছু আউটপুট প্রিন্ট করতে পারেন, যা আপনাকে বুঝতে সাহায্য করবে যে কোথায় সমস্যা হচ্ছে এবং ভেরিয়েবলগুলির মান কী।
উদাহরণ:
RSpec.describe "Calculator" do
it "should add two numbers correctly" do
result = 2 + 3
puts "Result of addition: #{result}" # Debugging statement
expect(result).to eq(5)
end
endএখানে, puts ব্যবহার করে result এর মান কনসোলে প্রিন্ট করা হয়েছে। আপনি যেকোনো স্থান থেকে পরিবর্তনশীল বা অবস্থা দেখার জন্য puts ব্যবহার করতে পারেন।
আউটপুট:
Result of addition: 5p ব্যবহার:
p কমান্ডটি সাধারণত puts থেকে বেশি তথ্য দেয়, যেমন এটি অবজেক্টের জন্য বিস্তারিত ডাম্প করে।
p result২. debugger ব্যবহার করা
Ruby-তে debugger ব্যবহার করে আপনি কোডের মধ্যবর্তী অবস্থানে ব্রেকপয়েন্ট রাখতে পারেন। RSpec টেস্ট চালানোর সময়, এই ব্রেকপয়েন্টে কোড থেমে যাবে এবং আপনি তার পরবর্তী নির্দেশনা পরীক্ষা করতে পারবেন।
উদাহরণ:
require 'byebug'
RSpec.describe "Calculator" do
it "should add two numbers correctly" do
result = 2 + 3
byebug # Debugging statement
expect(result).to eq(5)
end
endএখানে, byebug ব্যবহার করলে যখন টেস্ট চলবে, তখন কোড সেখানেই থেমে যাবে। আপনি টেস্ট রান করার সময় কনসোল থেকে ভেরিয়েবল এবং অন্যান্য উপাদান পরীক্ষা করতে পারবেন।
আউটপুট:
(byebug) result
=> 5
(byebug) continueআপনি continue কমান্ড ব্যবহার করে টেস্ট চালিয়ে যেতে পারেন, বা অন্যান্য step, next, exit কমান্ড ব্যবহার করে কোডের অভ্যন্তরীণ কার্যক্রম পরীক্ষা করতে পারেন।
৩. puts এবং byebug কম্বিনেশন
অন্য একটি উপায় হলো puts এবং byebug একসাথে ব্যবহার করা, যাতে আপনি ভেরিয়েবল বা স্টেটমেন্ট প্রিন্ট করতে পারেন এবং পরে কোডের মধ্যে আরও গভীরে প্রবেশ করতে পারেন।
উদাহরণ:
require 'byebug'
RSpec.describe "Calculator" do
it "should add two numbers correctly" do
result = 2 + 3
puts "Result of addition: #{result}" # Print value to console
byebug # Debugging statement
expect(result).to eq(5)
end
endএখানে, আপনি puts দ্বারা আউটপুট দেখতে পারবেন এবং পরে byebug দ্বারা আরও বিশদভাবে ত্রুটি নির্ণয় করতে পারবেন।
৪. RSpec এর --backtrace অপশন ব্যবহার করা
আপনি যদি একটি ব্যর্থ টেস্ট কেসের সম্পূর্ণ স্ট্যাক ট্রেস দেখতে চান, তবে --backtrace অপশন ব্যবহার করতে পারেন। এটি টেস্ট রান করার সময় আপনাকে আরও বিস্তারিত ত্রুটি সহ একটি স্ট্যাক ট্রেস প্রদান করবে, যা ডিবাগিং করতে সহায়ক হতে পারে।
কমান্ড:
rspec --backtraceআউটপুট উদাহরণ:
Failure/Error: expect(result).to eq(5)
expected: 5
got: 3
(Full stack trace here...)এই অপশনটি বিশেষত বড় টেস্ট স্যুটে সহায়ক যেখানে ব্যর্থতার কারণ শনাক্ত করতে সাহায্য করে।
৫. expect এর সঙ্গে failure_message ব্যবহার করা
RSpec-এ আপনি কাস্টম failure_message প্রদান করতে পারেন, যাতে আপনি যখন টেস্ট ফেইল করেন তখন আরও বিস্তারিত ব্যাখ্যা পাবেন।
উদাহরণ:
RSpec.describe "Calculator" do
it "should add two numbers correctly" do
result = 2 + 3
expect(result).to eq(5), "Expected the result to be 5, but got #{result}"
end
endএখানে, যদি টেস্ট ফেইল হয়, তবে আপনি কাস্টম মেসেজ পাবেন যা ব্যর্থতার কারণ সম্পর্কে আরও তথ্য প্রদান করবে।
আউটপুট:
Failure/Error: expect(result).to eq(5)
Expected the result to be 5, but got 3৬. RSpec-এ let এবং let! এর Debugging
আপনি যখন let এবং let! ব্যবহার করছেন, তখন মাঝে মাঝে ভেরিয়েবলটির মান ডিবাগ করতে হতে পারে। এর জন্য আপনি puts বা p ব্যবহার করতে পারেন।
উদাহরণ:
RSpec.describe "Calculator" do
let(:number) { 2 + 3 }
it "should add two numbers correctly" do
puts "The sum is: #{number}" # Debugging statement
expect(number).to eq(5)
end
endএখানে, let ব্লকের মধ্যে গণনা করা number ভেরিয়েবলটি টেস্ট চলাকালে puts দ্বারা প্রিন্ট করা হবে।
সারাংশ
RSpec টেস্ট কেসে debugging statements ব্যবহার করার বিভিন্ন উপায় রয়েছে যা আপনাকে কোডের ত্রুটি দ্রুত শনাক্ত করতে সাহায্য করবে। puts এবং byebug হল সবচেয়ে সাধারণ এবং কার্যকরী debugging টেকনিক। আপনি আরও কাস্টম failure মেসেজ ব্যবহার, স্ট্যাক ট্রেস দেখতে --backtrace অপশন ব্যবহার এবং অন্যান্য debugging টুলস ব্যবহার করে আপনার টেস্ট কেসগুলোর মধ্যে সমস্যাগুলি সনাক্ত করতে পারেন।
Read more