البرمجة

استخدام Mockito في تجارب الوحدة: تغيير قيمة الإرجاع بناءً على معلمة

عندما تواجه تحديا في تحديد قيمة إرجاع مختلفة لدالة في Mockito بناءً على قيمة معينة لمعلمة، يمكنك اللجوء إلى استخدام thenAnswer بدلاً من thenReturn. يتيح لك thenAnswer تقديم تنفيذ مخصص للإجابة على الاستدعاء.

لتحقيق هذا، يمكنك تعريف Answer مخصص يحتوي على تنفيذ متقدم يأخذ في اعتباره قيمة request.getId() ويقوم بإرجاع القيمة المناسبة. فيما يلي مثال على كيفية تحقيق ذلك:

java
// تعريف Answer مخصص Answer customAnswer = invocation -> { Request request = invocation.getArgument(0); String requestId = request.getId(); // تحديد القيم المخصصة استنادًا إلى request.getId() if ("someValue".equals(requestId)) { return "100"; } else if ("anotherValue".equals(requestId)) { return "200"; } else { return "defaultFallbackValue"; } }; // استخدام thenAnswer بدلاً من thenReturn Mockito.when(client.get(Mockito.any(Request.class))).thenAnswer(customAnswer);

في هذا المثال، يتم تحديد customAnswer كمتغير يحتوي على تنفيذ مخصص للإجابة على الاستدعاء. يتم استخدام request.getId() لتحديد القيمة المناسبة التي يجب إرجاعها بناءً على القيمة المحددة لـ id في الطلب. يمكنك تخصيص المنطق حسب احتياجاتك.

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

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

تحتاج إلى فهم أن Mockito يقدم عدة طرق لمحاكاة سلوك مختلف. في هذا السياق، تستخدم Mockito.when(...).thenReturn(...) لتحديد قيمة إرجاع ثابتة للدالة المستدعاة على المحاكاة. ومع ذلك، تريد القدرة على تغيير القيمة المُرجَعة بناءً على قيمة معينة لمعلمة.

الكود السابق يعتبر حلاً جيدًا، حيث يستخدم thenAnswer لتوفير تنفيذ مخصص للإجابة على الاستدعاء. يمكنك تعديل القطعة المخصصة (customAnswer) وفقًا لمتطلباتك، مثل إضافة المزيد من الشروط أو تحسين المنطق بناءً على متطلبات الاختبار.

على سبيل المثال، يمكنك تحسينها للتعامل مع مجموعة أوسع من القيم الممكنة لـ request.getId() أو إضافة سيناريوهات اختبار إضافية. كما يُفضل دائمًا إضافة تعليقات توضح المزيد عن المنطق المخصص المضاف في customAnswer لجعل الشيفرة أكثر فهمًا للقراء.

هذه الطريقة تسمح لك بتحقيق اختبارات أكثر دقة وشمولية للكود الخاص بك، مما يزيد من ثقة وجودة التطبيق.

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

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

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

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