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