পরীক্ষার ব্যর্থতার সাথে সম্পৃক্ত পুরো ট্রেসটি দিতে কীভাবে আরএসপেক -২ পাবেন?


96

এখনই যদি আমি আমার পরীক্ষার স্যুটটি ব্যবহার করে চালিত করি তবে আমি rake specএকটি ত্রুটি পেয়েছি:

1) বিভাগগুলি নিয়ন্ত্রণকারী জিইটি 'সূচক' কাজ করা উচিত
   ব্যর্থতা / ত্রুটি: 'সূচক' পান
   # এর জন্য অপরিজ্ঞাত পদ্ধতি `লোকেল '
   #।
      'ব্লক (3 স্তর) এ'

আমার যেমন ত্রুটি আছে এটি স্বাভাবিক :)

সমস্যাটি হ'ল ট্রেসটি খুব সহায়ক নয়। আমি জানি এটি segments_controller_spec.rb14 টি লাইনটি ভেঙে গেছে , তবে এখানেই আমি পরীক্ষার ডাক দিয়েছি:

### segments_controller_spec.rb:14
get 'index'

আমি প্রকৃত লাইন ব্রেকিং এবং সম্পূর্ণ ট্রেস করতে পছন্দ করব, অনুমান ফোল্ডারের অংশ নয়।

দিয়ে দৌড়াতে --traceসাহায্য হয় না।


4
পরীক্ষা করে দেখুন spin.atomicobject.com/2010/12/28/rspec-backtrace-filtering আছে পরিবর্তন ডিফল্ট RSpec ব্যাক-ট্রেস ফিল্টারিং একটি উপায়
Bohdan

উত্তর:


244

-bপূর্ণ ব্যাকট্রেসগুলি দেখতে আপনাকে বিকল্পের সাথে আরএসপেক চালাতে হবে


9
আমি এটি পাই না, এটির বা গৃহীত উত্তরগুলি আপনার স্পেক ফাইল থেকে আপনাকে আর ব্যাকট্র্যাস দেয় না। বা এটি কেবল আমার জন্য কাজ করে না o_O
janko-m

এবং ফিউইউইউ যদি আপনি স্পার্ক এবং গার্ডের সাথে আরএসপেক ব্যবহার করেন তবে আপনি যখন আপনার টেস্ট স্যুটটি চালাবেন তখন আউটপুট পেতে একটি .rspec ফাইল তৈরি করতে এবং এতে -b যুক্ত করতে পারেন
শিখোলাস

এটি প্রকৃতপক্ষে সঠিক উত্তর - আপনার প্রায় পুরো সময় ব্যাকট্রিজের (যেমন রেল এবং আরএসপেক এবং অন্যান্য রত্নগুলির মতো স্টাফ অন্তর্ভুক্ত) প্রয়োজন হয় না - রত্নটির কারণে সৃষ্ট কোনও কিছুর ডিবাগ করা বা বোঝার জন্য আপনার কেবল একবার প্রয়োজন হয় is নিজেই সুতরাং ডিফল্ট ব্যাকট্রেস পরিষ্কার প্যাটার্নগুলিতে আটকে থাকুন এবং আপনার যখন প্রয়োজন হয় বিজোড় ক্ষেত্রে -b ব্যবহার করুন।
আসফ্যান্ড কাজী

এটি ত্রুটি সম্পর্কে নিজেই স্ট্যাক ট্রেস তথ্য দেখায় নি। বরং এটি আরএসপেক মণির স্ট্যাক ট্রেস দেখিয়েছিল
আলেকসান্দ্রাস

আরএসপেক 3-তেও কাজ করে
কোয়েন।

29

আরেকটি (সহজ) বিকল্প হ'ল .rspecফাইলটি সম্পাদনা করা এবং backtraceবিকল্পটি যুক্ত করা। এটি কিছুটা এরকম দেখতে হবে:

--colour
--backtrace

এটি আপনাকে পুরো ব্যাকট্রেস দেবে। আশাকরি এটা সাহায্য করবে.


হ্যাঁ! এই আমার প্রয়োজন ঠিক কি। স্ট্যাক ট্রেসটি আসল ত্রুটির সাথে স্প্যাক স্ট্যাক নয়।
দিয়েগোসালাজার

আমি বিশ্বাস করি উপযুক্ত বানানটি হ'ল color। আমি মনে করি আপনি যদি এটির বানান করেন তবে colourএকটি মন্টি পাইথন রসিকতা উপস্থিত হতে পারে
ওয়াটসআইনাবক্স

4
আপনি আমেরিকা থেকে যদি উপযুক্ত। ইউকেতে তারা রঙ লেখেন, এবং আরএসপেকের লোকেরা উভয়কেই অনুমতি দেওয়ার জন্য অত্যন্ত
বিনয়ী

4
এটি বোনটে একটি স্প্যানার ছুড়ে ফেলেছে!
ডিম্বাকর্ষণকারী


2

আর একটি পদ্ধতির মধ্যে সমস্ত ব্যাকট্রিজ বর্জনীয় ধরণগুলি সাফ করা spec_helper.rb। আমি এই সমাধানটি সবচেয়ে পছন্দ করি কারণ আমি সমস্ত আরএসপেক সেটিংসকে এক জায়গায় রাখতে সক্ষম হয়েছি এবং এ থেকে মুক্তি পেতে .rspec fileবা স্পষ্ট --backtraceকরতে পারি .travis.yml

# spec_helper.rb
RSpec.configure do |config|
  config.backtrace_exclusion_patterns = []
end

আরএসপেক ২.x-তে এই বিকল্পটি রয়েছে বলে মনে হয় না।
মাইকেল ইয়াগুদেব

1

আরএসপিপিতে প্রদর্শন করতে কীভাবে নিয়ামক ত্রুটি পেতে হয় তা আমি জানি না। কখনও কখনও এটি প্রদর্শিত হয় তবে আমি জানি না কী পরিস্থিতি এটির কারণ দেখায়। এখানে ত্রুটি মোটামুটি দ্রুত দেখার একটি উপায় এখানে:

অন্য একটি টার্মিনাল সেশন খুলুন এবং রান করুন:

tail -f log/test.log

তারপরে টার্মিনাল সেশনে ফিরে যান এবং কেবলমাত্র সেই অনুমানটি চালান যা ত্রুটিযুক্ত ছিল:

bin/rspec -b spec/requests/posts/index_spec.rb

লগের লেজে ফিরে যান এবং আপনার ত্রুটিটি দেখতে পাওয়া উচিত, আশেপাশে খুব বেশি অন্যান্য জিনিস না দিয়ে (কারণ আপনি নিজেই ব্যর্থ পরীক্ষায় দৌড়েছিলেন)।


0

অন্য সমস্ত বিকল্প ব্যর্থ হওয়ার পরে আর একটি বিকল্প হ'ল কেবল একটি রেসকিউ ব্লক যুক্ত করুন এবং স্ট্যাকের চেষ্টাটি প্রিন্ট করুন বা সেখানে একটি বাধ্যতামূলক pry স্টেটমেন্ট যুক্ত করুন এবং ব্যবহার করুন show-stack

rescue Exception => e
  puts ""
  puts e.backtrace
  puts ""

এটি কখনও কখনও সেরা বিকল্প। একবার এটি কাজ করার পরে আপনি এটি সরিয়ে ফেলুন তা নিশ্চিত করুন। এটির জায়গাটি মোড়ানো উচিত যেখানে আপনি ত্রুটি হওয়ার প্রত্যাশা করেন। নিয়ামকের ক্রিয়া পদ্ধতির বাইরের বিবৃতি হিসাবে সম্ভবত beginএন্ড rescueব্লকটি রেখে দিন। বা ব্যবহার rescue_from
বেনিয়ামিন আটকিন

4
@ বাট হ্যাঁ এটি একটি সর্বশেষ অবলম্বন প্রচেষ্টা এবং @ বট যেমন বলেছেন আপনি এটি একবার বের করে নিলেন তা অপসারণ করা দরকার। সর্বদা মনে রাখবেন git diffএটি করার আগে আপনার কাজটি করা আপনার বেকনকে সংরক্ষণ করবে।
মাইকেল ইয়াগুদায়েভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.