لا يوجد توثيق للاختبار مع فاراداي. حيث أعمل ، تم تقديم Ruby on Rails لأنه رائع. لم يتم التفكير كثيرًا في اختبار الحالات الحمراء. أود المساهمة ببعض الوثائق لمساعدة الآخرين
usage
شكرا لجلب هذا الأمر. رداً على ذلك ، قمت بنشر PR لتضمين اختبار مباشر / وحدة وأمثلة rspec لاستخدام محول اختبار فاراداي: # 1000. هذه هي الطريقة الموصى بها لاختبار Faraday ، بدلاً من اختبار مكتبات مزدوجة خارجية (rspec ، mocha ، webmock ، إلخ).
لم ألاحظ في أي وقت أنه يختبر أشياء مثل المهلات وأخطاء الاتصال وما إلى ذلك. هل الموضوع مستاء أو الطريقة التي يستخدمها PR # 998 فقط.
أفترض أنني لا أحصل على بناء الجملة
أفترض أنني لا أحصل على بناء الجملة
عفوًا ، ربما ينبغي عليّ إعادة زيارة مستندات اختبار فاراداي مرة أخرى: /
يستخدم بناء الجملة في # 1000 مثيل Faraday::Adapter::Test::Stubs
، وهو كائن كعب روتين حصري لاختبار دورات طلبات / استجابة faraday. يمكنك استخدامه لإعداد استجابات وهمية لطلبات http في اختبار معين.
it 'parses name' do
# this block yields a rack response: an array with:
# response status, http header hash, and response body
stubs.get('/ebi') do |env|
[
200,
{ 'Content-Type': 'application/javascript' },
'{"name": "shrimp"}'
]
end
expect(client.sushi('ebi')).to eq('shrimp')
stubs.verify_stubbed_calls
end
أعتذر ، من الواضح أنني لم أقرأ مشاكلك جيدًا بما فيه الكفاية. لقد فاتني تمامًا رغبتك تحديدًا في اختبار الاستثناءات. اختبار مثل هذا يعمل أيضًا (سأضيفه إلى # 1000):
it 'handles exception' do
stubs.get('/ebi') do
raise Faraday::ConnectionFailed, nil
end
expect { client.sushi('ebi') }.to raise_error(Faraday::ConnectionFailed)
stubs.verify_stubbed_calls
end
أنا أفضل التطبيقات المزدوجة للاختبار المحدد مثل هذا على نهج الاستهزاء الأكثر عمومية ، لأنها لا تزال تمر عبر سير عمل طلب فاراداي بأكمله. إذا أراد أحد المطورين استخدام نماذج RSpec على أي حال ، فسيتم تقديمهم بشكل أفضل مع وثائق RSpec الممتازة.
سلمت مع # 1000
التعليق الأكثر فائدة
شكرا لجلب هذا الأمر. رداً على ذلك ، قمت بنشر PR لتضمين اختبار مباشر / وحدة وأمثلة rspec لاستخدام محول اختبار فاراداي: # 1000. هذه هي الطريقة الموصى بها لاختبار Faraday ، بدلاً من اختبار مكتبات مزدوجة خارجية (rspec ، mocha ، webmock ، إلخ).