كيف يمكنني التعامل مع التبعيات عبر الإنترنت عند تشغيل RSPEC دون اتصال؟
-
25-09-2019 - |
سؤال
أرغب في تشغيل RSPEC لاختبار الكود الخاص بي عندما أكون متصلاً بالويب وعندما لا أكون كذلك.
لسوء الحظ ، هناك بعض الاختبارات في التطبيق والتي تعتمد على وجود اتصال مباشر - إرسال البريد الإلكتروني ، وتكامل Facebook وما إلى ذلك.
هل هناك أفضل طريقة لإنشاء بيئة اختبار عبر الإنترنت/غير متصل أو هل هذه الممارسة السيئة؟ إذا حكمنا من قلة الإيجاد حول هذا الأمر على الويب ، فإنني أخمن هذا الأخير.
المحلول
عادة في مواقف كهذه ، سخرب من أجزاء الكود التي تتصل خارج التطبيق الخاص بك. يتيح لك ذلك الاختبار مقابل النتائج المتوقعة من الخدمة/النظام الذي تتصل به. كما أنه أسرع في إجراء الاختبارات.
هناك برنامج تعليمي موجز عن السخرية مع RSPEC هنا لكنني متأكد من أنه يمكنك العثور على الكثير بنفسك.
للاختبار الذي يتم إرسال رسائل البريد الإلكتروني التي يتم إرسالها ، هناك طرق أخرى إذا كنت ترسل من خلال ActionMailer. هناك قسم في ذلك في دليل اختبار القضبان.
تحرير (ردًا على التعليق): يمكنك وضع طريقة في TestHelper
لتشغيل الاختبارات فقط عندما تكون متصلاً بالإنترنت. شيء مثل:
def when_online
if test_remote_connectivity
yield
else
puts "Skipping test offline."
end
end
ثم يمكنك تسميته مثل:
def test_facebook
when_online do
.....
end
end
لست متأكدًا من أنني أدافع عنها تمامًا ولكنها قد تفعل ما تريد!
نصائح أخرى
يمكنك استخدام WebMock داخل الاختبارات/المواصفات التي لا تريد الاتصال بالمورد البعيد.