আমি কীভাবে কেবল এসএসপিকে নির্দিষ্ট পরীক্ষা চালাতে পারি?


159

আমি মনে করি একটি প্রদত্ত লেবেল দিয়ে কেবল পরীক্ষা চালানোর একটি উপায় আছে। কেউ জানেন?

উত্তর:


186

ডকুমেন্টেশনগুলি খুঁজে পাওয়া সহজ নয় তবে আপনি একটি হ্যাশ দিয়ে উদাহরণ ট্যাগ করতে পারেন। যেমন।

# 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

স্বয়ংক্রিয়ভাবে 'কেন্দ্রীভূত' পরীক্ষা চালানোর জন্য কীভাবে আরএসপেক কনফিগার করতে হয় তার জন্য এই উত্তরটি দেখুন । এটি গার্ডের সাথে বিশেষত ভাল কাজ করে ।


সুতরাং আপনাকে অনুসন্ধান করতে হবে না, জেটেটিকের পরামর্শের সরাসরি লিঙ্কটি এখানে রয়েছে (আরএসপেক ২.১২ এর জন্য) relishapp.com/rspec/rspec-core/v/2-12/docs/command-line/…
tir38

কোডটি কখনই ফোকাসের সাথে একীভূত না হয় তা নিশ্চিত করার জন্য আমরা আমাদের স্যুটটিতে একটি স্পেস যুক্ত করেছি: উত্স নিয়ন্ত্রণে এখনও সত্য। gist.github.com/jwg2s/7361603
jwg2s

@ jwg2s আমি গিট হুক ব্যবহার করে কমান্ডগুলি অবরুদ্ধ করতে ব্যবহার করি :focus, যা অনাকাঙ্ক্ষিতদের যেমন 'বাইন্ডিং.প্রাই কনসোল.লগ' , ইত্যাদি কোডবেজে প্রবেশ করা থেকে বাধা দেয় ।
zetetic

1
@ নাহ, আমি কেবল একজন অনুরাগী :) তারা রিলিশে যা করেছে তা আমি সত্যিই পছন্দ করি তবে এসও কেবল এটির নিজস্ব ডকুমেন্টেশন বৈশিষ্ট্য চালু করেছে, যাতে আমরা কিছু প্রতিযোগিতা দেখতে পাই।
জেটেটিক

1
হতে পারে আপনি আমাকে ডকুমেন্টেশনের পথে চিহ্নিত করতে পারেন যা কার্যত rspecপ্রোগ্রামের ব্যবহার এবং প্রকৃত আচরণের বর্ণনা দেয় :) কারণ রিলিশ ডকটি এটি করে না।
ওথিয়াস

111

আপনি সমস্ত পরীক্ষা চালাতে পারেন যা --example (বা -e) বিকল্প সহ একটি নির্দিষ্ট স্ট্রিং ধারণ করে :

rspec spec/models/user_spec.rb -e "User is admin"

আমি সেটিকে সবচেয়ে বেশি ব্যবহার করি।


89

আপনার 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

1
Rspec 3.5, এটা config.filter_run_when_matchingএবং এটা যোগ করে কাজ করতে পারে :focusউদাহরণ
আলী Ghanavatian

4
'ফোকাস: ট্রু' যদি দুর্ঘটনাক্রমে প্রতিশ্রুতিবদ্ধ হয় তবে বেশিরভাগ পরীক্ষা না চালিয়েও আপনার সিআই পাস হবে।
zach

67

বিকল্পভাবে আপনি লাইন নম্বরটি পাস করতে পারেন: rspec spec/my_spec.rb:75- লাইন নম্বরটি একটি একক স্পেস বা একটি প্রসঙ্গে নির্দেশ করতে পারে / ব্লককে বর্ণনা করতে পারে (সেই ব্লকের সমস্ত চশমা চালাচ্ছে)


50

আপনি একাধিক লাইন সংখ্যাও একসাথে কোলন দিয়ে স্ট্রিং করতে পারেন:

$ rspec ./spec/models/company_spec.rb:81:82:83:103

আউটপুট:

Run options: include {:locations=>{"./spec/models/company_spec.rb"=>[81, 82, 83, 103]}}

এতো সোনা! ♂️‍♂️
iGbanam

28

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


5

আরএসপেকের নতুন সংস্করণগুলিতে, সমর্থনটি কনফিগার করা আরও সহজ 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


3

এছাড়াও আপনি 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'এবং উপরের কোডটি ফাইলটি নির্দিষ্ট করে একটি একক পরীক্ষা চালানোর সম্ভাবনাটি হারাবে না? আমি এটিতে কোনও দলিল খুঁজে পাচ্ছি না।
ওথিয়াস

1
spec_helper.rbসবসময় আপনার আছে যদি অন্তর্ভুক্ত করা হয় --require spec_helperমধ্যে .rspecপ্রকল্পের রুট হবে।
ক্রিস

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.