البرمجة

اختبارات Feign مع WireMock في Spring Cloud

في هذا المقال، سنستكشف كيفية كتابة اختبارات التكامل (Integration Tests) باستخدام Spring Cloud Netflix و Feign، مع التركيز على كيفية إدراج خادم WireMock في خدمة Eureka لتمكين Feign من العثور عليه والتواصل معه.

لبداية، دعونا نتحدث قليلاً عن مكوناتنا الرئيسية هنا. نستخدم Spring Cloud Netflix للاتصال بين خدمات الميكروسيرفس. لدينا خدمتان، Foo و Bar. يقوم Foo باستهداف أحد نقاط النهاية REST في Bar باستخدام Feign، والذي يتم وضعه في واجهة تحمل العلامة @FeignClient.

ثم، لدينا فئة الخدمة SomeService في Foo، التي تقوم بالاتصال بـ BarClient. تقوم SomeService بمحاولة استدعاء BarClient وإرسال طلب Bazzle. في حالة حدوث استثناء Feign، يتم التعامل معه ويتم إرجاع رسالة مناسبة.

الآن، لنبني اختبارات التكامل للتأكد من أن التواصل بين الخدمات يعمل بشكل صحيح. نريد أن نقوم بإنشاء اختبار يرسل طلب HTTP حقيقي إلى خادم WireMock مزيف، وذلك باستخدام شيء مثل WireMock. هذا الاختبار يجب أن يتأكد من أن Feign يفك تشفير استجابة الخدمة بشكل صحيح ويقوم بتقديم التقرير إلى SomeService.

الآن، كيف يمكننا حقن مثل هذا الخادم WireMock إلى Eureka؟ نحتاج إلى بعض السحر بواسطة التعليقات والتهيئة المناسبة. دعونا نلقي نظرة على كيفية تنفيذ ذلك:

أولاً، يجب علينا تهيئة اختبارات التكامل لاستخدام WireMock كجزء من اختباراتنا. نحتاج إلى تهيئة WireMock في اختباراتنا ليستمع إلى الطلبات ويُعيد الاستجابات المزيفة بناءً على الطلبات.

ثم، نحتاج إلى تهيئة Eureka و Feign للعثور على WireMock بدلاً من الخدمة الحقيقية. يمكننا تحقيق هذا باستخدام التهيئة المناسبة وتوجيه Feign إلى خادم WireMock بدلاً من الخدمة الحقيقية المُرسلة عبر Eureka.

بعد ذلك، يمكننا كتابة الاختبارات التي تقوم بتشغيل الطلبات الحقيقية عبر WireMock والتحقق من استجاباتها وكيفية تفاعل SomeService معها.

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

وهكذا، يمكننا استخدام WireMock كجزء من اختباراتنا التكاملية مع Spring Cloud Netflix و Feign، وضمان تشغيل الخدمات بشكل صحيح وفقًا للمتوقع. من خلال التهيئة المناسبة، يمكننا جعل Feign يعثر على WireMock بسهولة، مما يمكننا من اختبار التفاعلات بين الخدمات بكفاءة وفعالية.

المزيد من المعلومات

بمجرد أن نتأكد من أن الاختبارات التكاملية تعمل بنجاح مع WireMock، يمكننا الآن التوجه إلى الخطوة التالية المهمة، وهي تهيئة Feign للعثور على خادم WireMock بدلاً من الخدمة الحقيقية عبر Eureka.

لتحقيق ذلك، نحتاج إلى إعداد البيئة بشكل مناسب وتهيئة Feign لاستخدام WireMock بدلاً من الخدمة الحقيقية. يمكن القيام بذلك عبر التعليمات البرمجية التالية:

java
@Configuration public class FeignConfiguration { @Value("${wiremock.server.url}") private String wiremockServerUrl; @Bean public BarClient barClient() { return Feign.builder() .decoder(new GsonDecoder()) .target(BarClient.class, wiremockServerUrl); } }

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

ثم، نضيف التكوين اللازم في ملف التكوين الرئيسي لتطبيق Spring:

yaml
wiremock: server: url: http://localhost:8080

وبهذا، يكون Feign مكونًا ومهيأً لاستخدام خادم WireMock بدلاً من الخدمة الحقيقية. يمكننا الآن تشغيل اختباراتنا التكاملية بثقة والاعتماد على أن Feign سيجد ويتفاعل مع WireMock بدلاً من الخدمة الفعلية.

في النهاية، من خلال هذه الخطوات، يمكننا بناء اختبارات تكاملية فعالة وموثوقة باستخدام WireMock وSpring Cloud Netflix وFeign. باستخدام التكوين المناسب والإعدادات، يمكننا ضمان أن اختباراتنا تعمل بنجاح وتقوم بالتحقق من تفاعلات الخدمات بشكل صحيح وفعّال.

بهذا، نكون قد استكملنا الطريقة لكتابة اختبارات التكامل الفعالة مع Spring Cloud Netflix وFeign مع استخدام WireMock كأداة افتراضية للاختبار. هذا المقال يوفر للمطورين إرشادات قيمة لضمان جودة وأداء التطبيقات الخاصة بهم في بيئة الميكروسيرفس.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر