আমি মনে করি একটি প্রদত্ত লেবেল দিয়ে কেবল পরীক্ষা চালানোর একটি উপায় আছে। কেউ জানেন?
আমি মনে করি একটি প্রদত্ত লেবেল দিয়ে কেবল পরীক্ষা চালানোর একটি উপায় আছে। কেউ জানেন?
উত্তর:
ডকুমেন্টেশনগুলি খুঁজে পাওয়া সহজ নয় তবে আপনি একটি হ্যাশ দিয়ে উদাহরণ ট্যাগ করতে পারেন। যেমন।
# spec/my_spec.rb
describe SomeContext do
it "won't run this" do
raise "never reached"
end
it "will run this", :focus => true do
1.should == 1
end
end
$ rspec --tag focus spec/my_spec.rb
গিটহাবের আরও তথ্য । (আরও ভাল লিঙ্ক সহ যে কেউ, দয়া করে পরামর্শ দিন)
(হালনাগাদ)
আরএসপেক এখন এখানে দুর্দান্তভাবে নথিভুক্ত করা হয়েছে । বিশদ জানতে --tag বিকল্প বিভাগটি দেখুন।
V2.6 হিসাবে এই ধরণের ট্যাগটি কনফিগারেশন বিকল্পটি অন্তর্ভুক্ত করে আরও সহজভাবে প্রকাশ করা যেতে পারে treat_symbols_as_metadata_keys_with_true_values
, যা আপনাকে এটি করতে দেয়:
describe "Awesome feature", :awesome do
যেখানে :awesome
এটি করা হয় যেমন চিকিত্সা করা হয় :awesome => true
।
স্বয়ংক্রিয়ভাবে 'কেন্দ্রীভূত' পরীক্ষা চালানোর জন্য কীভাবে আরএসপেক কনফিগার করতে হয় তার জন্য এই উত্তরটি দেখুন । এটি গার্ডের সাথে বিশেষত ভাল কাজ করে ।
:focus
, যা অনাকাঙ্ক্ষিতদের যেমন 'বাইন্ডিং.প্রাই কনসোল.লগ' ,
ইত্যাদি কোডবেজে প্রবেশ করা থেকে বাধা দেয় ।
rspec
প্রোগ্রামের ব্যবহার এবং প্রকৃত আচরণের বর্ণনা দেয় :) কারণ রিলিশ ডকটি এটি করে না।
আপনি সমস্ত পরীক্ষা চালাতে পারেন যা --example (বা -e) বিকল্প সহ একটি নির্দিষ্ট স্ট্রিং ধারণ করে :
rspec spec/models/user_spec.rb -e "User is admin"
আমি সেটিকে সবচেয়ে বেশি ব্যবহার করি।
আপনার spec_helper.rb
:
RSpec.configure do |config|
config.filter_run focus: true
config.run_all_when_everything_filtered = true
end
এবং তারপরে আপনার চশমা:
it 'can do so and so', focus: true do
# This is the only test that will run
end
আপনি 'ফিট' দিয়ে পরীক্ষাগুলি ফোকাস করতে পারেন বা 'xit' দিয়ে বাদ দিতে পারেন, যেমন:
fit 'can do so and so' do
# This is the only test that will run
end
config.filter_run_when_matching
এবং এটা যোগ করে কাজ করতে পারে :focus
উদাহরণ
বিকল্পভাবে আপনি লাইন নম্বরটি পাস করতে পারেন: rspec spec/my_spec.rb:75
- লাইন নম্বরটি একটি একক স্পেস বা একটি প্রসঙ্গে নির্দেশ করতে পারে / ব্লককে বর্ণনা করতে পারে (সেই ব্লকের সমস্ত চশমা চালাচ্ছে)
আপনি একাধিক লাইন সংখ্যাও একসাথে কোলন দিয়ে স্ট্রিং করতে পারেন:
$ rspec ./spec/models/company_spec.rb:81:82:83:103
আউটপুট:
Run options: include {:locations=>{"./spec/models/company_spec.rb"=>[81, 82, 83, 103]}}
RSpec 2.4 এর হিসাবে (আমি অনুমান) আপনি যদি একটি পূর্বে লিখুন পারেন f
বা x
করার it
, specify
, describe
এবং context
:
fit 'run only this example' do ... end
xit 'do not run this example' do ... end
http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#fit-class_method http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#xit-class_method
আছে কিনা নিশ্চিত করুন config.filter_run focus: true
এবং config.run_all_when_everything_filtered = true
আপনার spec_helper.rb
।
আরএসপেকের নতুন সংস্করণগুলিতে, সমর্থনটি কনফিগার করা আরও সহজ fit
:
# spec_helper.rb
# PREFERRED
RSpec.configure do |c|
c.filter_run_when_matching :focus
end
# DEPRECATED
RSpec.configure do |c|
c.filter_run focus: true
c.run_all_when_everything_filtered = true
end
দেখা:
https://relishapp.com/rspec/rspec-core/docs/filtering/filter-run-when-matching
https://relishapp.com/rspec/rspec-core/v/3-7/docs/configuration/run-all-when-everything-filtered
এছাড়াও আপনি focus: true
ডিফল্টরূপে চশমা চালাতে পারেন
বৈশিষ্ট / spec_helper.rb
RSpec.configure do |c|
c.filter_run focus: true
c.run_all_when_everything_filtered = true
end
তারপরে সহজভাবে চালান
$ rspec
এবং শুধুমাত্র কেন্দ্রীভূত পরীক্ষা চালানো হবে
তারপরে আপনি focus: true
সমস্ত পরীক্ষাগুলি সরিয়ে ফেললে আবার চালানো হবে
আরও তথ্য: https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/filtering/inc સમાવેશ-filters
spec/spec_helper.rb
সবসময় অন্তর্ভুক্ত? বা কেবল কোনও বিকল্প দেওয়া না হলে? কেন পরীক্ষার মডিউলগুলি রয়েছে require 'spec_helber'
এবং উপরের কোডটি ফাইলটি নির্দিষ্ট করে একটি একক পরীক্ষা চালানোর সম্ভাবনাটি হারাবে না? আমি এটিতে কোনও দলিল খুঁজে পাচ্ছি না।
spec_helper.rb
সবসময় আপনার আছে যদি অন্তর্ভুক্ত করা হয় --require spec_helper
মধ্যে .rspec
প্রকল্পের রুট হবে।
আপনি হিসাবে চালাতে পারেন rspec spec/models/user_spec.rb -e "SomeContext won't run this"
।