logo

طرق الموكيتو

يوفر إطار عمل Mockito مجموعة متنوعة من الأساليب، مثل mock()، وverify()، وWhen()، وما إلى ذلك، المستخدمة لاختبار تطبيقات Java. إن استخدام هذه الأساليب المحددة مسبقًا يجعل الاختبار سهلاً للغاية.

ويرد أدناه وصف موجز لطرق Mockito:

جافا يلقي شار إلى السلسلة

طريقة موكيتو موك ().

يتم استخدامه لإنشاء كائنات وهمية لفئة أو واجهة معينة. Mockito يحتوي على خمسة وهمية () طرق مع حجج مختلفة. عندما لم نقم بتعيين أي شيء للنماذج، فسوف يعيدون القيم الافتراضية. جميع الطرق الخمس تؤدي نفس وظيفة السخرية من الكائنات.

فيما يلي طرق mock() ذات معلمات مختلفة:

    طريقة وهمية () مع الفئة:يتم استخدامه لإنشاء كائنات وهمية لفئة محددة أو واجهة. يستغرق فئة أو اسم واجهة كمعلمة.
    بناء الجملة: وهمية (فئة classToMock)طريقة وهمية () مع الإجابة:يتم استخدامه لإنشاء كائنات وهمية لفئة أو واجهة بإجراء محدد. إنها طريقة وهمية متقدمة يمكن استخدامها عند العمل مع الأنظمة القديمة. يستغرق الإجابة كمعلمة مع اسم الفئة أو الواجهة. الإجابة عبارة عن تعداد لإجابات وهمية تم تكوينها مسبقًا.
    بناء الجملة: وهمية (فئة classToMock، الإجابة الافتراضية)طريقة mock () مع MockSettings:يتم استخدامه لإنشاء كائنات وهمية مع بعض الإعدادات غير القياسية. يأخذ MockSettings كمعلمة إعداد إضافية إلى جانب الفئة أو اسم الواجهة. تسمح MockSettings بإنشاء كائنات وهمية بإعدادات إضافية.
    بناء الجملة: وهمية (فئة classToMock، MockSettings mockSettings)طريقة وهمية () مع ReturnValues:يسمح بإنشاء كائنات وهمية لفئة أو واجهة معينة. الآن، تم إهماله، حيث تم استبدال ReturnValues ​​بـ Answer.
    بناء الجملة: وهمية (فئة classToMock، ReturnValues ​​returnValues)طريقة وهمية () مع السلسلة:يتم استخدامه لإنشاء كائنات وهمية عن طريق تحديد الأسماء الوهمية. في تصحيح الأخطاء، يمكن أن تكون تسمية الكائنات الوهمية مفيدة، في حين أن ذلك يعد اختيارًا سيئًا عند استخدامها مع تعليمات برمجية كبيرة ومعقدة.
    بناء الجملة: وهمية (فئة classToMock، اسم السلسلة)

يوضح مقتطف الكود التالي كيفية الاستخدام وهمية () طريقة:

 ToDoService doService = mock(ToDoService.class); 

طريقة Mockito متى ().

أنها تمكن طرق stubbing. يجب استخدامه عندما نريد السخرية من إرجاع قيم محددة عند استدعاء أساليب معينة. بعبارات بسيطة،' متى يتم استدعاء طريقة XYZ () ، ثم عودة ABC.' يتم استخدامه في الغالب عندما يكون هناك شرط ما للتنفيذ.

بناء الجملة: متى (طريقة TCall)

يوضح مقتطف التعليمات البرمجية التالي كيفية استخدام طريقة When():

 when(mock.someCode ()).thenReturn(5); 

في الكود أعلاه، ثمالعودة () يستخدم في الغالب مع متى() طريقة.

طريقة التحقق من Mockito ().

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

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

تُستخدم طريقة التحقق () أيضًا لاختبار عدد الاستدعاءات. حتى نتمكن من اختبار العدد الدقيق للدعوات باستخدام طريقة الأوقات، طريقة مرة واحدة على الأقل، و على الأكثر طريقة لطريقة ساخرة.

هناك نوعان من أساليب التحقق () المتوفرة في فئة Mockito، وهي موضحة أدناه:

    طريقة التحقق ():إنه يتحقق من حدوث سلوك معين مرة واحدة.
    بناء الجملة: تحقق (تي وهمية)طريقة التحقق () مع VerificationMode:فهو يتحقق من حدوث بعض السلوكيات مرة واحدة على الأقل، أو عدد المرات المحددة، أو عدم حدوثها مطلقًا.
    بناء الجملة: التحقق (T وهمية، وضع VerificationMode)

طريقة Mockito للتجسس ().

يوفر Mockito طريقة للسخرية جزئيًا من كائن، والتي تُعرف باسم جاسوس طريقة. عند استخدام طريقة التجسس، يوجد كائن حقيقي، ويتم إنشاء جواسيس أو بذرة لهذا الكائن الحقيقي. إذا لم نقم بإيقاف طريقة ما باستخدام التجسس، فسوف تستدعي الطريقة الحقيقية سلوكًا. الوظيفة الرئيسية لطريقة التجسس () هي أنها تتجاوز الطرق المحددة للكائن الحقيقي. إحدى وظائف طريقة التجسس () هي التحقق من استدعاء طريقة معينة.

هناك نوعان من أساليب التجسس () المتوفرة في فئة Mockito:

    طريقة التجسس ():يخلق جاسوسا للكائن الحقيقي. تستدعي طريقة التجسس الطرق الحقيقية ما لم يتم إيقافها. يجب علينا استخدام الجواسيس الحقيقيين بعناية وأحيانًا، على سبيل المثال، عند التعامل مع الكود القديم.
    بناء الجملة: جاسوس (كائن T)طريقة التجسس () مع الفئة:يقوم بإنشاء كائن تجسس بناءً على الفئة بدلاً من الكائن. تعتبر طريقة التجسس (كائن T) مفيدة بشكل خاص للتجسس على الفئات المجردة لأنه لا يمكن إنشاء مثيل لها.
    بناء الجملة: تجسس (فئة classToSpy)

يوضح مقتطف التعليمات البرمجية التالي كيفية استخدام طريقة التجسس ():

 List spyArrayList = spy(ArrayList.class); 

طريقة إعادة تعيين Mockito ().

يتم استخدام طريقة إعادة تعيين Mockito () لإعادة تعيين النماذج. يتم استخدامه بشكل أساسي للعمل مع الحاويات المحقونة. عادةً ما تؤدي طريقة إعادة الضبط () إلى تعليمات برمجية طويلة واختبارات سيئة. من الأفضل إنشاء نماذج جديدة بدلاً من استخدام طريقة إعادة الضبط (). ولهذا السبب نادرًا ما يتم استخدام طريقة إعادة الضبط () في الاختبار.

توقيع طريقة إعادة التعيين () هو:

سم إلى القدمين وبوصة
 public static void reset(T ... mocks) { MOCKITO_CORE.reset(mocks); } 

طريقة التحقق من MockitoNoMoreInteractions()

يتم استخدامه للتحقق من أن أيًا من النماذج الموضحة لديها أي تفاعلات لم يتم التحقق منها. يمكننا استخدام هذه الطريقة بعد التحقق من جميع النماذج، للتأكد من عدم استدعاء أي شيء آخر في النماذج. كما يكتشف أيضًا الاستدعاءات التي لم يتم التحقق منها والتي تحدث قبل طريقة الاختبار، على سبيل المثال، في setup() أو طريقة @Before أو المنشئ. إنها طريقة اختيارية، ولا نحتاج إلى استخدامها في كل اختبار.

توقيع طريقة VereNoMoreInteractions() هو:

 public static void verifyNoMoreInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); } 

طريقة التحقق من MockitoZeroInteractions()

إنه يتحقق من عدم حدوث أي تفاعل على النماذج المحددة. كما أنه يكتشف أيضًا الاستدعاءات التي حدثت قبل طريقة الاختبار، على سبيل المثال، في setup() أو طريقة @Before أو المنشئ.

توقيع طريقة VereZeroInteractions() هو:

 public static void verifyZeroInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); } 

طريقة Mockito doThrow()

يتم استخدامه عند إيقاف طريقة فارغة لطرح استثناء. يقوم بإنشاء مثيل استثناء جديد لكل استدعاء أسلوب. هناك نوعان من أساليب doThrow() المتوفرة في فئة Mockito مع معلمات مختلفة، كما هو موضح أدناه:

    طريقة doThrow() مع Throwable:يتم استخدام هذه الطريقة عندما نريد إيقاف طريقة باطلة مع استثناء. بناء الجملة: doThrow (يمكن رميه ليتم رميه)
    توقيع طريقة doThrow() هو:
 public static Stubber doThrow(Throwable toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsException(toBeThrown)); } 
    طريقة doThrow() مع الفئة:يتم استخدام هذه الطريقة عندما نريد إيقاف طريقة فارغة لرمي استثناء لفئة محددة.
    بناء الجملة: doThrow (الفئة toBeThrown)
    توقيع طريقة doThrow() هو:
 public static Stubber doThrow(Class toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsExceptionClass(toBeThrown)); } 

طريقة Mockito doCallRealMethod()

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

توقيع الأسلوب doCallRealMethod() هو:

 public static Stubber doCallRealMethod() { return MOCKITO_CORE.doAnswer(new CallsRealMethods()); } 

طريقة Mockito doAnswer ().

يتم استخدامه عندما نريد إيقاف طريقة باطلة بنوع إجابة عام. توقيع طريقة doAnswer () هو:

 public static Stubber doAnswer(Answer answer) { return MOCKITO_CORE.doAnswer(answer); } 

طريقة Mockito doNothing()

يتم استخدامه لتعيين طرق باطلة لعدم القيام بأي شيء. يتم استخدام طريقة doNothing() في حالات نادرة. افتراضيًا، لا تفعل الأساليب الفارغة في المثيلات الوهمية شيئًا، أي لا يتم تنفيذ أي مهمة.

توقيع طريقة doNothing() هو:

شار إلى كثافة العمليات
 public static Stubber doNothing() { return MOCKITO_CORE.doAnswer(new DoesNothing()); } 

طريقة Mockito doReturn ().

يتم استخدامه في تلك المناسبات النادرة عندما لا نستطيع استخدام Mockito.when(object). يُقترح دائمًا الأسلوب Mockito.when(object) للاستبعاد لأنه نوع وسيط آمن وأكثر قابلية للقراءة مقارنة بالطريقة doReturn() .

توقيع طريقة doReturn() هو:

 public static Stubber doReturn(Object toBeReturned) { return MOCKITO_CORE.doAnswer(new Returns(toBeReturned)); } 

طريقة Mockito inOrder ().

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

توقيع طريقة Mockito.inOrder() هو:

 public static InOrder inOrder(Object... mocks) { return MOCKITO_CORE.inOrder(mocks); } 

Mockito طريقة تجاهلStubs ().

يتم استخدامه لتجاهل الأساليب المتعثرة للنماذج المعطاة للتحقق. إنه مفيد مع VerNoMoreInteractions() أو التحقق inOrder(). كما أنه يساعد في تجنب التحقق الزائد من المكالمات المتوقفة.

توقيع طريقة التجاهلStubs () هو:

 public static Object[] ignoreStubs(Object... mocks) { return MOCKITO_CORE.ignoreStubs(mocks); } 

طريقة موكيتو تايمز ().

يتم استخدامه للتحقق من العدد الدقيق لاستدعاءات الطريقة، مما يعني أنه يعلن عن عدد مرات استدعاء الطريقة. توقيع طريقة times() هو:

 public static VerificationMode times(int wantedNumberOfInvocations) { return VerificationModeFactory.times(wantedNumberOfInvocations); } 

طريقة Mockito Never ().

يتم استخدامه للتحقق من عدم حدوث التفاعل. توقيع الطريقة Never() هو:

 public static VerificationMode never() { return times(0); } 

طريقة Mockito atLeastOnce()

يتم استخدامه للتحقق من الاستدعاء مرة واحدة على الأقل مما يعني أنه يجب استدعاء الطريقة مرة واحدة على الأقل.

توقيع طريقة atLeastOnce() هو:

 public static VerificationMode atLeastOnce() { return VerificationModeFactory.atLeastOnce(); } 

طريقة Mockito على الأقل ().

يتم استخدامه للتحقق من الاستدعاء بعدد x من المرات على الأقل. على سبيل المثال، على الأقل (3) يعني أن الطريقة سوف تستدعي ثلاث مرات على الأقل.

توقيع الأسلوب atLeast() هو:

 public static VerificationMode atLeast(int minNumberOfInvocations) { return VerificationModeFactory.atLeast(minNumberOfInvocations); } 

طريقة Mockito atMost()

يتم استخدامه للتحقق من الاستدعاء لعدد x من المرات على الأكثر. على سبيل المثال، عند إعطاء atMost(3) يعني أن الطريقة ستستدعي ثلاث مرات كحد أقصى.

توقيع الأسلوب atMost() هو:

 public static VerificationMode atMost(int maxNumberOfInvocations) { return VerificationModeFactory.atMost(maxNumberOfInvocations); } 

طريقة مكالمات Mockito ().

يسمح بالتحقق غير الجشع بالترتيب. ولا يمكن استخدامه إلا مع طريقة التحقق inOrder(). على سبيل المثال، inOrder.verify(mock, calls(3)).xyzMethod('...');

توقيع طريقة المكالمات () هو:

 public static VerificationMode calls( int wantedNumberOfInvocations ){ return VerificationModeFactory.calls( wantedNumberOfInvocations ); } 

طريقة Mockito فقط ().

يتحقق من أن الطريقة المحددة هي الطريقة الوحيدة التي تم استدعاؤها. توقيع الطريقة الوحيدة () هو:

jframe
 public static VerificationMode only() { return VerificationModeFactory.only(); } 

طريقة مهلة Mockito ().

يسمح لـ Mockito بإجراء التحقق مع انتهاء المهلة. إنه يوجه عملية التحقق إلى الانتظار لفترة زمنية محددة لتفاعل معين بدلاً من الفشل على الفور. قد يكون مفيدًا للاختبار في المواقف الحالية.

تختلف طريقة timeout() عن طريقة after() حيث تنتظر طريقة after() الفترة الكاملة ما لم يتم الإعلان عن النتيجة النهائية بينما ستتوقف طريقة timeout() بمجرد مرور عملية التحقق. ونادرا ما يستخدم في الاختبار.

توقيع طريقة timeout() هو:

 public static VerificationWithTimeout timeout(long millis) { return new Timeout(millis, VerificationModeFactory.times(1)); } 

طريقة Mockito بعد ().

فهو يسمح لـ Mockito بالتحقق خلال فترة زمنية معينة. لقد ناقشنا بالفعل أن طريقة after() تختلف عن طريقة timeout().

توقيع الأسلوب after() هو:

 public static VerificationAfterDelay after(long millis) { return new After(millis, VerificationModeFactory.times(1)); } 

طريقة Mockito validateMockitoUsage()

يتم استخدامه للتحقق بشكل صريح من حالة إطار العمل لاكتشاف الاستخدام غير الصالح لإطار عمل Mockito. إنها ميزة اختيارية لـ Mockito لأنها تتحقق من صحة الاستخدام طوال الوقت. يقوم كل من العداء المدمج (MockitoJUnitRunner) والقاعدة (MockitoRule) باستدعاء طريقة validateMockitoUsage() بعد كل طريقة اختبار.

توقيع طريقة validateMockitoUsage() هو:

 public static void validateMockitoUsage() { MOCKITO_CORE.validateMockitoUsage(); } 

Mockito مع طريقة الإعدادات ().

يتم استخدامه لإنشاء نماذج وهمية مع إعدادات وهمية إضافية. وينبغي استخدامه في بعض الأحيان في الاختبار. بدلًا من استخدام التابع withSettings()، أنشئ اختبارات بسيطة باستخدام عمليات محاكاة بسيطة. الأسباب الرئيسية لاستخدام MockSettings هي

  • باستخدام MockSetting، يمكننا بسهولة إضافة إعدادات وهمية أخرى عند الحاجة.
  • فهو يجمع بين إعدادات وهمية مختلفة دون إفساد الكود.

توقيع الأسلوب withSettings() هو:

 public static MockSettings withSettings() { return new MockSettingsImpl().defaultAnswer(RETURNS_DEFAULTS); }