إعادة تعيين Mocks في Mockito هي ميزة تتيح لك إعادة استخدام الكائنات السخرية عن طريق مسح القطع والتفاعلات. ومع ذلك ، فإن استخدام `reset ()` لا يشجع عمومًا إلا إذا كان ذلك ضروريًا للغاية ، حيث يمكن أن يشير إلى اختبارات سيئة التنظيم. فيما يلي بعض أفضل الممارسات لإعادة ضبط Mocks في Mockito:
فهم متى يجب استخدام `Reset ()`
-تجنب استخدام "إعادة تعيين ()": السبب الرئيسي "إعادة تعيين ()" موجود هو دعم النسيج المحققة للحاويات ، مثل تلك المستخدمة في التعليمات البرمجية القديمة أو واجهات الطرف الثالث. في معظم الحالات ، خاصةً مع التعليمات البرمجية التي تم تصميمها جيدًا ، يجب عليك تجنب استخدام "إعادة تعيين ()" وبدلاً من ذلك تركز على إنشاء طرق اختبار صغيرة ومركزة [2] [4].
- رائحة الكود: إذا وجدت نفسك بحاجة إلى استخدام `` repret () `داخل طريقة الاختبار ، فقد تكون علامة على أن اختباراتك معقدة للغاية أو تغطي الكثير من السيناريوهات. قد يشير هذا إلى الحاجة إلى إعادة تشكيل اختباراتك أو الكود الذي يتم اختباره [2].
بدائل لـ `RESET ()`
- قم بإنشاء Mocks جديدة: بدلاً من إعادة تعيين Mocks ، فكر في إنشاء مثيلات وهمية جديدة لكل طريقة اختبار. يضمن هذا النهج أن يبدأ كل اختبار بقائمة نظيفة ، مما يقلل من خطر التفاعلات من الاختبارات السابقة التي تؤثر على الاختبارات الحالية [4].
- استخدم `clearinvocations ()`: إذا كنت بحاجة فقط إلى مسح سجل الاحتجاج (على سبيل المثال ، للتحقق من التفاعلات دون التأثير على الذروة) ، استخدم `mockito.clearinvocations ()`. تزيل هذه الطريقة تاريخ الاحتجاج دون إعادة تعيين كعبان ، والتي يمكن أن تكون مفيدة في سيناريوهات معينة [4].
أفضل الممارسات لإعادة ضبط السخرية
- إعادة تعيين بعد كل اختبار: إذا كان عليك إعادة تعيين Mocks ، فقم بذلك بعد كل طريقة اختبار باستخدام "@بعد" في Junit أو `Aftereach ()` في scalatest. هذا يضمن أن كل اختبار يبدأ بحالة وهمية نظيفة [3] [10].
- تجنب إعادة تعيين قبل الاختبارات: إعادة تعيين السخرية قبل كل اختبار يمكن أن يؤدي إلى الارتباك حول الحالة التي تكون فيها وهمية في بداية الاختبار. من الواضح عمومًا إنشاء نماذج جديدة أو إعادة تعيين بعد الاختبارات [10].
- استخدام ميزات الإطار: في الأطر مثل الربيع ، باستخدام التعليقات التوضيحية مثل `@mockbean` يمكن تلقائيًا معالجة إعادة تعيين النهبة بعد كل اختبار ، مما يلغي الحاجة إلى إعادة التعيين اليدوي [10].
خاتمة
بينما توفر Mockito طريقة "إعادة تعيين ()" لحالات الاستخدام المحددة ، إلا أنه من المستحسن تجنب استخدامه لصالح تصميم الاختبار الأكثر نظافة وأكثر تركيزًا. من خلال إنشاء نماذج جديدة لكل اختبار أو استخدام ميزات إطار لإدارة الحالة الوهمية ، يمكنك ضمان اختبارات قوية ويمكن الحفاظ عليها دون الحاجة إلى إعادة ضبط يدوي.
الاستشهادات:[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://site.mockito.org/javadoc/current/org/mockito/mockito.html
[3] https://twitter.github.io/finatra/user-guide/testing/mocks.html
[4] https://softwareengineering.stackexchange.com/questions/188299/is-this-an-appiret-use-of-mockitos-reset-method
[5] https://github.com/mockito/mockito-kotlin/issues/513
[6]
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[8] https://github.com/mockito/mockito/issues/183
[9] https://www.toptal.com/java/a-guide-to- everyday-mockito
[10] https://stackoverflow.com/questions/18164123/how-to-clean-up-mocks-in-spring-tests-when-using-using-mockito