ruby - تعطيل مجموعة من الاختبارات في rspec؟




bdd (5)

استخدم مرشحات الاستبعاد . من هذه الصفحة: في 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

عندما أقوم بتشغيل "rspec ./spec/sample_spec.rb - documentat doc"

ثم يجب أن يحتوي الإخراج على "group 2 example 1"

ويجب ألا يحتوي الإخراج على "group 1 example 1"

ويجب ألا يحتوي الإخراج على "group 1 example 2"

لدي مواصفات اختبار 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

ولكن كما قلت ، فقط ذهبت لتشغيل الإختبارات تحت المكالمة المعلقة.

لقد قادني البحث إلى مؤشر ترابط القائمة البريدية هذا حيث يقول منشئ المحتوى (؟) من rspec أنه من الممكن في rspec 2 ، الذي أقوم بتشغيله. أعتقد أنها كانت ناجحة ولكن لم يكن لديها التأثير المطلوب في تعطيل جميع الاختبارات التالية ، وهو ما أفكر فيه عندما أرى مكالمة pending .

هل هناك بديل أو هل أفعله خطأ؟


استخدم المعلقة بدلاً من الوصف. إذا كان حظرك هو:

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

فقط لشرح ما يحدث مع التعليمات البرمجية. بما في ذلك مكان وجودك ، فإنه يتم تقييمه فقط (ومن ثم تشغيله) عند تحميل الملف أثناء بدء التشغيل. ومع ذلك فأنت بحاجة إلى أن يتم تشغيلها عند تشغيل الاختبارات. هذا هو السبب في أن الإجابات قد اقترحت وضع pending (RSpec 2) أو skip (RSpec 3) في كتلة before .


لتعطيل شجرة المواصفات باستخدام RSpec 3 ، يمكنك:

before { skip }
# or 
xdescribe
# or 
xcontext

يمكنك إضافة رسالة بالقفزة التي ستظهر في المخرجات:

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

مع RSpec 2 :

before { pending }

describe "GET /blah" do

  before(:each) { pending "Feature to be implemented..." }

  it { expect(page).to have_button("Submit") }
  it { expect(page).to have_content("Blah") }
end




bdd