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


102

আমার একটি পরীক্ষার স্পেস রয়েছে যা describesকোন শ্রেণি এবং এর মধ্যে contextsবিভিন্ন itব্লকের সাথে বিভিন্ন রয়েছে।

contextঅস্থায়ীভাবে অক্ষম করতে পারি এমন কোন উপায় আছে কি ?

আমি অক্ষম করতে চাই এমন একটির pending "temporarily disabled"মধ্যে একেবারে শীর্ষে একটি কল যুক্ত করার চেষ্টা করেছি context, এবং আমি অনুমানটি চালানোর সময় মুলতুবি থাকা সম্পর্কে কিছু দেখতে পেয়েছি তবে এটি কেবল বাকি পরীক্ষাগুলি চালিয়ে যায়।

এটাই আমার ধরণের ছিল:

describe Something
  context "some tests" do
    it "should blah" do
      true
    end
  end

  context "some other tests" do
    pending "temporarily disabled"

    it "should do something destructive" do
      blah
    end
  end
end

তবে আমি যেমন বলেছিলাম যে এটি কেবল মুলতুবি থাকা কলটির নীচে পরীক্ষা চালিয়ে গেছে।

অনুসন্ধান আমাকে এই মেইলিং তালিকা থ্রেডে নিয়ে গেছে যেখানে আরএসপেকের নির্মাতা (?) বলেছেন যে এটি আরএসপেক 2 এ সম্ভব, যা আমি চালাচ্ছি। আমি অনুমান করি এটি কার্যকর হয়েছে তবে নিম্নলিখিত পরীক্ষাগুলি নিষ্ক্রিয় করার এটির কাঙ্ক্ষিত প্রভাব ছিল না, যখন আমি কোনও pendingকল দেখি তখন আমার মনে হয় ।

বিকল্প আছে বা আমি এটা ভুল করছি?

উত্তর:


165

আরএসপেক 3 ব্যবহার করে একটি চশমা গাছ অক্ষম করতে আপনি করতে পারেন:

before { skip }
# or 
xdescribe
# or 
xcontext

আপনি স্কিপ সহ একটি বার্তা যুক্ত করতে পারেন যা আউটপুটে প্রদর্শিত হবে:

before { skip("Awaiting a fix in the gem") }

সঙ্গে RSpec 2 :

before { pending }

1
আপনি যে কোনও ব্লকটিতে এটি ঠিক কীভাবে করেন:describe 'XXXXX' do .... end
p.matsinopoulos

2
@ p.matinopoulos কেবল নিম্নলিখিত লাইনে এটি যুক্ত করুন describe 'XXXXX' do। মনোমুগ্ধকর মতো কাজ করেছেন, ধন্যবাদ @ পাইরো!
চেস্টারবার

ফিল্টারগুলির চেয়ে সহজ সমাধান, +1
ডলজেনকো

আমি তোমায় ভালোবাসি. আমি আপনাকে একটি বিয়ার পাওনা!
আলডো 'xoen' গিয়ামেলুচা

2
এটা সুন্দর. আপনি 'এড়িয়ে যান' পরে একটি বার্তা অন্তর্ভুক্ত করতে পারেন যা আউটপুটে প্রদর্শিত হবে।
জান হেটিচ

44

বর্জন ফিল্টার ব্যবহার করুন । এই পৃষ্ঠা থেকে: আপনার spec_helper.rb(বা rails_helper.rb)

RSpec.configure do |c|
  c.filter_run_excluding :broken => true
end

আপনার পরীক্ষায়:

describe "group 1", :broken => true do
  it "group 1 example 1" do
  end

  it "group 1 example 2" do
  end
end

describe "group 2" do
  it "group 2 example 1" do
  end
end

আমি যখন "RSSpec ./spec/sample_spec.rb - ফর্ম্যাট ডক" চালনা করি

তারপরে আউটপুটটিতে "গ্রুপ 2 উদাহরণ 1" থাকা উচিত

এবং আউটপুটে "গ্রুপ 1 উদাহরণ 1" থাকা উচিত নয়

এবং আউটপুটে "গ্রুপ 1 উদাহরণ 2" থাকা উচিত নয়


19

আপনি এই সম্পর্কে কি মনে করেন দেখুন:

describe "something sweet", pending: "Refactor the wazjub for easier frobbing" do
  it "does something well"
  it "rejects invalid input"
end

আমি যখন "কিছু সময়ের জন্য" কিছু অক্ষম করছি তখন আমি আমার মুলতুবি থাকা আইটেমগুলির সাথে কারণগুলি দেখতে চাই। তারা কম মন্তব্য / টোডো হিসাবে পরিবেশন করে যা কোনও মন্তব্য বা বাদ দেওয়া উদাহরণ / ফাইলে রাখার পরিবর্তে নিয়মিতভাবে উপস্থাপিত হয়।

পরিবর্তন itকরার জন্য pendingবা xitদ্রুত এবং সহজ, কিন্তু আমি হ্যাশ নির্মাণ পছন্দ করে। এটি আপনাকে প্রতি-রান পরিচালিত ডকুমেন্টেশন দেয়, একটি ড্রপ-ইন (বর্ণনা / প্রসঙ্গে বর্ণিত পরিবর্তন হয় না / তাই আমাকে পরে কী ব্যবহার করতে হবে তা সিদ্ধান্ত নিতে হবে), এবং সিদ্ধান্তটি নেওয়া বা অবরুদ্ধ অপসারণ করা হলে ঠিক সেইভাবে সরানো হবে ।

এটি গ্রুপ এবং স্বতন্ত্র উদাহরণগুলির জন্য একই কাজ করে।


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

1
নিশ্চিত করেছে যে উভয় সঙ্গে এই কাজ, pending:এবং skip:rspec 3.6.0 মধ্যে। আমার কাছে সেরা সমাধানের মতো মনে হচ্ছে। আরএসপেক 3 এ মুলতুবি এখনও পরীক্ষা চালায়, তবে skipহয় না (তবে আপনি এটি প্রয়োগ করেন skip)।
jrochPoint

9

আরেকটা. https://gist.github.com/1300152

এটি নিষ্ক্রিয় করতে xdescribe, xcontext, xit ব্যবহার করুন।

হালনাগাদ:

আরএসপেক ২.১১, যেহেতু এটিতে ডিফল্টরূপে xit অন্তর্ভুক্ত রয়েছে। সুতরাং নতুন কোড হবে

# put into spec_helper.rb
module RSpec
  module Core
    module DSL
      def xdescribe(*args, &blk)
        describe *args do
          pending 
        end
      end

      alias xcontext xdescribe
    end
  end
end

ব্যবহার

# a_spec.rb
xdescribe "padding" do
  it "returns true" do
    1.should == 1
   end
end 

3

বর্ণনার পরিবর্তে মুলতুবি ব্যবহার করুন। যদি আপনার ব্লকটি হয়:

context "some other tests" do
  it "should do something destructive" do
    blah
  end
end

আপনি পুরো ব্লকটি এড়িয়ে যেতে পারেন:

pending "some other tests" do
  it "should do something destructive" do
    blah
  end
end


0

আপনার কোড সহ কী ঘটছে তা কেবল ব্যাখ্যা করার জন্য। আপনার যেখানে যেখানে রয়েছে সেগুলি সহ ফাইলটি শুরু করার সময় ফাইলটি লোড করা হলে এটি কেবল মূল্যায়ন করা হয় (এবং তাই চালানো হয়)। তবে পরীক্ষাগুলি চালানোর সময় আপনার এটি চালানো দরকার। সে কারণেই উত্তরগুলি pending(আরএসপেক 2) বা skip(আরএসপেক 3) একটি beforeব্লকে রাখার পরামর্শ দিয়েছে।

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