Rspec-core: مثال مشترك معلق

تم إنشاؤها على ٥ يونيو ٢٠١٤  ·  6تعليقات  ·  مصدر: rspec/rspec-core

لدي مجموعة من فئات البطة التي تنفذ جميعها مجموعة من الأساليب.
أنا قادر على بناء مجموعة أمثلة مشتركة تصف هذه الأساليب.

shared_examples_for "a duck type" do
  it { should respond_to(:method1) }
end
describe Class1 do
  it_should_behave_like "a duck type"
end
describe Class2 do
  it_should_behave_like "a duck type"
end

في وضعي ، قمت بتطبيق Class1#method1 ، لكن Class2#method1 معلق.

أود القدرة على قول:

describe Class2 do
    it_should_behave_like "a duck type", :pending
end

يمكنني تطبيق pending على مثال مشترك ، لكن ليس على it_should_behave_like . هذا هو دون المستوى الأمثل عند العمل مع مجموعة من أنواع البط حيث تكون بعض تطبيقات الفئة مكتملة والبعض الآخر معلق.

طلبات التحسين:
1) تمكين السمة :pending لـ it_should_behave_like
2) قم بتمكين السمة :skip لـ it_should_behave_like
3) أضف xit_should_behave_like

التعليق الأكثر فائدة

إذا وجد أي شخص آخر هذه المشكلة عبر Google ، فإليك خدعة أخرى يمكنك استخدامها في موقع الاتصال ، والتي لا تتطلب تعديل تعريف الأمثلة المشتركة لأخذ وسيطة البيانات الوصفية أو العلامات:

it_behaves_like 'some shared example' do
  before { pending }
end

ال 6 كومينتر

الوسيطات التي تم تمريرها إلى it_should_behave_like لها غرض مختلف: يتم إعادتها إلى مجموعة الأمثلة المشتركة:

https://relishapp.com/rspec/rspec-core/v/3-0/docs/example-groups/shared-examples#passing -parameters-to-a-shared-example-group

سيكون من المربك التعامل مع الحجج على أنها بيانات وصفية أيضًا. يمكنك الحصول على السلوك الذي تريده ، على الرغم من:

shared_examples_for "a duck type" do |*metadata|
  context "describe this group", *metadata do
    # put the specs in here.
  end
end

بالتناوب ، إذا كنت لا تريد التفاف المواصفات في سياق إضافي ، فيمكنك دعم pending أو skip باستخدام خطاف before :

shared_examples_for "a duck type" do |*flags|
  before { pending } if flags.include?(:pending)
  # specs go here
end

نعم ، شكرًا جزيلاً - سيعمل هذا بشكل مثالي.

إذا وجد أي شخص آخر هذه المشكلة عبر Google ، فإليك خدعة أخرى يمكنك استخدامها في موقع الاتصال ، والتي لا تتطلب تعديل تعريف الأمثلة المشتركة لأخذ وسيطة البيانات الوصفية أو العلامات:

it_behaves_like 'some shared example' do
  before { pending }
end

أعتقد أنه يجب إعادة فتح القضية ويجب القيام بأحد الإجراءات التالية

  • إما أن تسمح بتمييز جميع الأمثلة على أنها معلقة عن طريق لفها حول الكتل المعلقة
pending('Reason for pending') do 
  it_behaves_like '...'
  context do 
     ...
  end
end

تضمين التغريدة

يسعدني قبول العلاقات العامة لتحسين الوثائق إذا كنت ترغب في تجربتها ، لكنني لا أشعر أنه يجب توسيع واجهة برمجة التطبيقات لتغيير هذا السلوك.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات