كيف يمكنني التعامل مع التبعيات عبر الإنترنت عند تشغيل RSPEC دون اتصال؟

StackOverflow https://stackoverflow.com/questions/4603161

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top