اختبار Mockito للتحقق من استدعاء دالة أثناء استدعاء دالة أخرى
عند استخدام Mockito لاختبار دوال في Scala، يمكنك استخدامه للتحقق من أن دالة معينة تم استدعاؤها بالطريقة الصحيحة عند استدعاء دالة أخرى. في حالتك، تحتاج إلى التحقق من أن Function2 تم استدعاؤها بشكل صحيح عندما يتم استدعاء Function1. هناك طريقتان لفعل ذلك، يمكنك استخدام أحدهما:
الطريقة الأولى: استخدام Mockito.verify
scalaimport org.scalatest._ import org.mockito.Mockito._ import org.mockito.ArgumentMatchers._ trait MyTrait { def function1(): Unit = { function2("parameter") } def function2(param: String): Unit = { // some implementation } } class MyTraitSpec extends FlatSpec with Matchers with MockitoSugar { "MyTrait" should "call function2 with 'parameter' when function1 is called" in { val myTraitMock = mock[MyTrait] myTraitMock.function1() verify(myTraitMock).function2("parameter") } }
الطريقة الثانية: استخدام ArgumentCaptor
scalaimport org.scalatest._ import org.mockito.Mockito._ import org.mockito.ArgumentMatchers._ import org.mockito.ArgumentCaptor trait MyTrait { def function1(): Unit = { function2("parameter") } def function2(param: String): Unit = { // some implementation } } class MyTraitSpec extends FlatSpec with Matchers with MockitoSugar { "MyTrait" should "call function2 with 'parameter' when function1 is called" in { val myTraitMock = mock[MyTrait] myTraitMock.function1() val captor = ArgumentCaptor.forClass(classOf[String]) verify(myTraitMock).function2(captor.capture()) captor.getValue shouldEqual "parameter" } }
باستخدام أحد الطرق السابقة، يمكنك التحقق من أن Function2 تم استدعاؤها بالطريقة الصحيحة عند استدعاء Function1.
-
تحسين كفاءة التعامل مع Mongoose08/04/2024
-
Get Public IP Address EC212/03/2024
المزيد من المعلومات
بالتأكيد! إليك بعض المعلومات الإضافية حول استخدام Mockito في Scala:
1. إعادة قيمة من دالة مزيفة
يمكنك استخدام when
لتعيين قيمة تُرجع عند استدعاء دالة مزيفة. على سبيل المثال:
scalawhen(myTraitMock.function2(any[String])).thenReturn("mocked value")
2. التحقق من عدد مرات استدعاء دالة
يمكنك استخدام verify
مع القيمة المتوقعة للمرات التي يجب أن تستدعى فيها الدالة. على سبيل المثال:
scalaverify(myTraitMock, times(1)).function2("parameter")
3. التحقق من استدعاء الدالة بترتيب معين
إذا كان لديك حاجة للتحقق من استدعاء الدوال في ترتيب محدد، يمكنك استخدام InOrder
مع verify
، على سبيل المثال:
scalaval inOrder = inOrder(myTraitMock) inOrder.verify(myTraitMock).function1() inOrder.verify(myTraitMock).function2("parameter")
4. التحقق من عدم استدعاء دالة
إذا كنت تريد التحقق من عدم استدعاء دالة، يمكنك استخدام never()
، على سبيل المثال:
scalaverify(myTraitMock, never()).function2("parameter")
5. التحقق من استدعاء الدالة بنوع معين من المعلمة
يمكنك استخدام ArgumentMatchers
لتحديد نوع المعاملات المتوقعة عند التحقق من استدعاء الدوال، على سبيل المثال:
scalaverify(myTraitMock).function2(matches("[a-z]+"))
هذه بعض الأمثلة البسيطة على كيفية استخدام Mockito في Scala لاختبار وتحقق استدعاء الدوال.