في Mockito ، يتم استخدام `Times (n)` و `على الأقل (n)` في طريقة "التحقق" للتحقق من عدد المرات التي يتم فيها استدعاء الطريقة على كائن وهمية. إليك شرح مفصل لكل:
Times (N)
- الغرض: تتحقق هذه الطريقة من أن الطريقة تسمى بالضبط "أوقات". إذا تسمى الطريقة أكثر أو أقل من "أوقات" ، فسوف يفشل الاختبار.- مثال: `تحقق (وهمية ، الأوقات (2)). somemethod () ؛` يضمن أن `somemethod ()` يسمى بالضبط مرتين.
- استخدام الحالة: استخدم عندما تحتاج إلى ضمان عدد دقيق من الدعوات.
على الأقل (ن)
- الغرض: تتحقق هذه الطريقة من أن الطريقة تسمى على الأقل "مرات". إذا تم تسمية الطريقة أقل من "أوقات" ، فسوف يفشل الاختبار ، لكنه سيمر إذا كان يسمى أكثر من أوقات ".- مثال: `تحقق (وهمية ، على الأقل (2)). somemethod () ؛` يضمن أن `somemethod ()` يسمى على الأقل مرتين.
- استخدم الحالة: استخدم عندما تريد ضمان الحد الأدنى لعدد الدعوات ولكن لا تهتم بالحد الأقصى.
الاختلافات الرئيسية
- بالضبط مقابل الحد الأدنى: `مرات (n)` يتطلب عدد دقيق من المكالمات ، في حين أن `على الأقل (n)` يتطلب على الأقل عدد المكالمات.- المرونة: `على الأقل (n)` أكثر مرونة لأنها تتيح المزيد من المكالمات أكثر من المحدد ، في حين أن `times (n)` صارمة حول عدد المكالمات.
- معالجة الأخطاء: إذا تسمى طريقة تسمى مرات أكثر مما هو محدد مع "مرات (ن) ، سوف يرمي Mockito استثناء (tomanyactualinvocations"). مع `على الأقل (n)` ، لن يفشل إلا إذا تم تسمية الطريقة بأوقات أقل من المحددة ("toolittleActualinvocations").
باختصار ، يتم استخدام "الأوقات (ن)" للتحكم الدقيق في عدد مكالمات الطريقة ، بينما يتم استخدام "على الأقل (ن)" لضمان الحد الأدنى من عتبة المكالمات دون تقييد الحد الأقصى لعدد المكالمات.
الاستشهادات:[1] https://stackoverflow.com/questions/58176580/what-is-the-difference-between-atleastonce-and-times1-in-mockito
[2] https://mincong.io/2019/09/22/mockito-verify/
[3] https://github.com/mockk/mockk
[4] https://site.mockito.org/javadoc/current/org/mockito/mockito.html
[5] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.atleast
[6] https://stackoverflow.com/questions/60969650/use-of-verify-method-with-and-without-times1-parameter
[7] https://www.digitalocean.com/community/tutorials/mockito-verify
[8] https://stackoverflow.com/questions/27787487/java-verify-void-method-calls-n-times-with-mockito
[9] https://www.javacodegeeks.com/2015/11/mockito-verification.html
[10] https://stackoverflow.com/questions/54233024/how-to-verify-a-method-hich-was-called-multiple-times/54233921