طريقة mockito's ``) `` هي ميزة تتيح لك إعادة تعيين كائن وهمية حتى يمكن إعادة استخدامه. ومع ذلك ، يتم تثبيط استخدامه بشكل عام من قبل مطوري Mockito والمستخدمين ، حيث يمكن أن يشير إلى اختبارات أو رمز سيئ التصميم معقد للغاية ويصعب اختباره بشكل نظيف [7] [9]. بدلاً من ذلك ، فإن النهج الموصى به هو إنشاء نماذج جديدة لكل طريقة اختبار لضمان الاستقلال والوضوح في الاختبار [7] [9].
مقارنة مع المكتبات الساخرة الأخرى
1. هذا يعني أن JMock2 لا يتطلب إعادة ضبط صريحة مثل Mockito [10]. يساعد نهج JMock2 في الحفاظ على عزل الاختبار دون الحاجة إلى إعادة تعيين السخرية يدويًا.
2. Easymock: Easymock أيضًا لا يتطلب عادة طريقة إعادة تعيين. إنه مصمم لإنشاء كائنات وهمية جديدة لكل اختبار ، على غرار الممارسة الموصى بها مع Mockito. يذكر Szczepan Faber ، مطور Mockito ، أنه لم يكن بحاجة إلى ميزة إعادة تعيين أثناء استخدام Easymock [8].
3. Mockito مقابل المكتبات الأخرى: بشكل عام ، تعزز مكتبات أخرى من السخرية مثل JMock2 و EasyMock نهج اختبار أنظف إما من خلال إدارة حالة وهمية تلقائيًا أو تشجيع إنشاء نماذج جديدة لكل اختبار. طريقة Mockito's `Reset ()` هي استثناء أكثر من الاستثناء بدلاً من المعيار في أطراف السخرية.
أفضل الممارسات
- تجنب استخدام "إعادة تعيين ()`: ما لم يكن ذلك ضروريًا للغاية ، مثل عندما يتم حقن حاوية وهمية ولا يمكن إعادة تنفيذها لكل اختبار ، يُنصح بتجنب استخدام "إعادة التعيين ()`. بدلاً من ذلك ، ركز على إنشاء اختبارات بسيطة ومركزة مع نماذج جديدة لكل سيناريو [7] [9].
- استخدم `clearInvocations ()`: إذا كنت بحاجة إلى مسح التفاعلات دون إعادة تعيين الذروة ، استخدم `clearinvocations ()`. تتيح لك هذه الطريقة الحفاظ على القطع مع مسح أي تفاعلات مسجلة ، والتي يمكن أن تكون مفيدة في سيناريوهات معينة [5].
- رمز Refactor للاختبار: إذا وجدت نفسك بحاجة إلى استخدام `إعادة تعيين ()` في كثير من الأحيان ، قد يشير ذلك إلى أن الكود الخاص بك قد يستفيد من إعادة البناء لجعله أكثر قابلية للاختبار. هذا يمكن أن يتضمن تحطيم الأساليب المعقدة أو تحسين حقن التبعية [9].
باختصار ، بينما يوفر Mockito طريقة "إعادة تعيين ()" ، يتم تثبيط استخدامه عمومًا لصالح إنشاء نماذج جديدة لكل اختبار. غالبًا ما تعزز مكتبات السخرية الأخرى ممارسات مماثلة ، مع التأكيد على اختبارات نظيفة ومستقلة على إدارة وهمية معقدة.
الاستشهادات:[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://groups.google.com/g/mockito/c/y_ihdc8lx_m
[3] https://www.vogella.com/tutorials/mockito/article.html
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[5] https://www.toptal.com/java/a-guide-to- everyday-mockito
[6] https://www.jrebel.com/blog/mock-unit-testing-with-mockito
[7] https://stackoverflow.com/questions/34412106/appritive-use-of-mockito-reset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareengineering.stackexchange.com/questions/188299/is-this-an-appiret-use-of-mockitos-reset-method
[10] https://stackoverflow.com/questions/18164123/how-to-clean-up-mocks-in-spring-tests-when-using-using-mockito