سؤال

فقط في البداية، أنا جديد جدًا في اختبار كتب الطبخ الخاصة بي.لقد كنت أعمل في كتب الطبخ منذ بضعة أشهر وأفهم الأمور جيدًا إلى حد ما، لكن مشروعنا كان متساهلًا جدًا في إضافة الاختبارات.أحاول جرنا إلى اختبار هذه أيضًا.

الاختبار الخاص بي، كما هو الآن، يتحقق من بدء الخدمة.مشكلتي هي أنني سأعتبر الاختبار ناجحًا حقًا ترغب في التحقق، من خلال ملف سجل البداية، من أن البرنامج قد نجح في اجتياز خطوات بدء التشغيل.إحدى هذه الخطوات هي الاتصال بخادم RabbitMQ والتسجيل للاستماع إلى أربع منصات تبادل منفصلة.وهذا يستغرق بعض الوقت.

كنت أتطلع إلى استخدام ما يلي:

describe_recipe 'my_cookbook::test' do

  it " testing that the service is running" do
    service('foo').must_be_running
  end

  it " testing that the log file contains We're Up!" do
    file('/var/log/upstart/foo').must_include 'We're Up!'
  end

end

...لكنني أفشل لأنه يحاول التحقق من سجل البداية قبل حتى أنه تم إنشاؤه بواسطة الخدمة.حتى لو كان بإمكاني جعله ينتظر حتى يتم إنشاء الملف، فأنا بحاجة حقًا إلى إنشاء تأخير لمدة 5 ثوانٍ، يتم خلاله إنشاء اتصالات RabbitMQ.

هل يعرف أحد كيفية التعامل مع مشكلة التوقيت هذه؟

هل كانت مفيدة؟

المحلول

على الرغم من أنني أقترح أيضًا، كما فعل sethvargo بالنسبة لي، التحقيق في Test Kitchen، فقط في حالة احتياج شخص آخر إلى القدرة على إضافة فترات النوم إلى غرفه الصغيرة، يمكن القيام بذلك بهذه الطريقة:

it "sleeping" do; puts "need to say something here or the sleep will not happen at the right time"; sleep 5; end

لا ينبغي أبدًا حل مشكلات الاختراق والتوقيت عن طريق النوم، لكنني لن أفترض أنني أعرف ما قد تحتاجه من أجله؛-)

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