لدي مجموعة من فئات البطة التي تنفذ جميعها مجموعة من الأساليب.
أنا قادر على بناء مجموعة أمثلة مشتركة تصف هذه الأساليب.
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
الوسيطات التي تم تمريرها إلى 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
تضمين التغريدة
يسعدني قبول العلاقات العامة لتحسين الوثائق إذا كنت ترغب في تجربتها ، لكنني لا أشعر أنه يجب توسيع واجهة برمجة التطبيقات لتغيير هذا السلوك.
التعليق الأكثر فائدة
إذا وجد أي شخص آخر هذه المشكلة عبر Google ، فإليك خدعة أخرى يمكنك استخدامها في موقع الاتصال ، والتي لا تتطلب تعديل تعريف الأمثلة المشتركة لأخذ وسيطة البيانات الوصفية أو العلامات: