يوفر Mockito طريقتين يمكن استخدامهما لإدارة حالة السخرية أثناء الاختبار: `Reset ()` و `clearinvocations ()`. في حين يتم استخدام كلتا الطريقتين لإدارة حالة وهمية ، إلا أنها تخدم أغراض مختلفة ولها آثار مميزة على السخرية.
Mockito's `reset ()` method
يتم استخدام طريقة `reset ()` في mockito لإعادة ضبط كائن وهمية بالكامل. هذا يعني أنه لا يزيل تعداد الاحتجاج فحسب ، بل يزيل أيضًا أي قاذف تم تعيينه على السهارة. قد يكون هذا مشكلة لأنه يتطلب منك إعادة صياغة النفخ بعد إعادة تعيينه إذا كنت ترغب في الحفاظ على سلوك محدد لاختباراتك. يتم تثبيط استخدام `reset () بشكل عام لأنه يمكن أن يؤدي إلى اختبارات معقدة وأقل تركيزًا. يُنصح بتجنب استخدام "إعادة تعيين ()" ما لم يكن ضروريًا تمامًا ، حيث يمكن أن يحجب نية الاختبارات الخاصة بك وجعلها أكثر صعوبة في الحفاظ عليها [1] [5] [7].
Mockito's `clearinvocations ()` meth
تتيح لك طريقة `clearinvocations ()` ، التي تم تقديمها في Mockito 2.1 ، مسح تعدادات الاحتجاج من وهمية دون إعادة تعيين القطع. هذا يعني أنه يمكنك الاستمرار في استخدام نفس كبار السن مع ضمان بدء كل اختبار بقائمة نظيفة فيما يتعلق بدعوات الطريقة. تكون هذه الطريقة مفيدة عندما تحتاج إلى التحقق من التفاعلات في سيناريو مملوء أو عند استخدام أطر حقن التبعية ، ولكن يجب استخدامها بشكل ضئيل. يُنصح عمومًا بتجنب استخدام `clearinvocations ()` ما لم يكن ذلك ضروريًا ، حيث يمكن أن يعقد أيضًا الاختبارات إذا لم يتم استخدامها بعناية [1] [4] [9].
الاختلافات الرئيسية
- الذروة: `إعادة ضبط ()` يزيل كل القطع ، مما يتطلب منك إعادة صياغة وهمية ، في حين أن `clearinvocations ()` يترك القطع السليمة.
- تعداد الاحتجاج: كلتا الطريقتين مسح التنازل عن الاحتجاج ، ولكن `إعادة تعيين ()` يفعل ذلك كجزء من إعادة تعيين كاملة ، في حين أن "clearinvocations ()` يستهدف على وجه التحديد تعداد الاحتجاج.
- تعقيد الاختبار: يمكن أن تؤدي كلتا الطريقتين إلى اختبارات أكثر تعقيدًا إذا لم يتم استخدامها بعناية ، ولكن إعادة تعيين () `تميل إلى التسبب في مزيد من المشكلات بسبب الحاجة إلى إعادة السخرية.
باختصار ، على الرغم من أنه يمكن استخدام كلتا الطريقتين لإدارة الحالة الوهمية ، إلا أن "إعادة التعيين () أكثر غزوًا وإحباطًا بشكل عام ، في حين أن" ClearInvocations () أكثر استهدافًا ولكن لا يزال لا يزال من الممكن استخدامه بشكل قضائي للحفاظ على الاختبارات النظيفة والمركزة.
الاستشهادات:[1] https://softwareengineering.stackexchange.com/questions/188299/is-this-an-appiret-use-of-mockitos-reset-method
[2] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearinvocations
[3] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearallcaches
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.clearinvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-correct-alternative-to-resetting-a-mock-after-fter-tup-in-mockito
[6]
[7] https://stackoverflow.com/questions/30081161/mockito-does-verify-method-reboot-number-of-times
[8] https://javadoc.io/doc/org.mockito/mockito-core/2.25.1/org/mockito/mockito.html
[9] https://wesome.org/mockito-3-c-pocations
[10] https://github.com/mockk/mockk/discussions/842