برنامه نویسی

استفاده از حاشیه نویسی @spy در تست junit

Summarize this content to 400 words in Persian Lang
را @Spy حاشیه نویسی در JUnit، به ویژه هنگامی که با Mockito استفاده می شود، برای ایجاد جاسوسی بر روی یک شی واقعی اعمال می شود. جاسوس یک تمسخر جزئی است، به این معنی که شما می توانید برخی از روش های شی را مسخره کنید در حالی که رفتار واقعی روش های دیگر را حفظ کنید.

در اینجا برخی از کاربردهای رایج آن آورده شده است @Spy حاشیه نویسی:

تمسخر جزئی:

اگر شیئی دارید که اکثر روشها باید رفتار واقعی خود را حفظ کنند اما یک یا دو روش باید مورد تمسخر قرار گیرند، می توانید از جاسوس استفاده کنید.
مثال:

@Spy
private ListString> spyList = new ArrayList();

@Test
public void testSpy() {
spyList.add(“Mockito”);
Mockito.verify(spyList).add(“Mockito”);
assertEquals(1, spyList.size());

Mockito.doReturn(100).when(spyList).size();
assertEquals(100, spyList.size());
}

نادیده گرفتن رفتار روش واقعی:

شما می توانید از یک جاسوس برای نادیده گرفتن رفتار روش خاص یک شی واقعی استفاده کنید و در عین حال بقیه روش ها را دست نخورده نگه دارید.
مثال:

@Spy
private MyClass myClass = new MyClass();

@Test
public void testSpyWithMethodOverride() {
Mockito.doReturn(“Mocked Value”).when(myClass).someMethod();
assertEquals(“Mocked Value”, myClass.someMethod());
}

تأیید فراخوانی روش:

می‌توانید بررسی کنید که آیا روش‌های خاصی از جاسوس فراخوانی شده است یا خیر، که در هنگام آزمایش تعاملات مفید است.
مثال:

@Spy
private MyClass myClass = new MyClass();

@Test
public void testMethodCallVerification() {
myClass.someMethod();
Mockito.verify(myClass).someMethod();
}

ترکیب با @InjectMocks:

@Spy را می توان همراه با استفاده کرد @InjectMocks برای تزریق اشیاء جاسوسی شده به شی مورد آزمایش، امکان تمسخر جزئی در کلاس آزمایش شده را فراهم می کند.
مثال:

@Spy
private MyDependency dependency;

@InjectMocks
private MyService service;

@Test
public void testService() {
Mockito.doReturn(“Mocked Result”).when(dependency).doSomething();
assertEquals(“Mocked Result”, service.performAction());
}

تست کدهای قدیمی:

هنگامی که با کدهای قدیمی سروکار دارید که نمی‌توانید به راحتی آن‌ها را بازسازی کنید، استفاده از جاسوس به شما این امکان را می‌دهد تا روش‌های خاصی را بدون تغییر کد اصلی جداسازی و مسخره کنید.

به طور خلاصه، @Spy حاشیه نویسی زمانی مفید است که شما نیاز به کنترل یا تأیید رفتارهای خاص یک شی واقعی دارید در حالی که بقیه رفتار شیء را بدون تغییر نگه دارید.

را @Spy حاشیه نویسی در JUnit، به ویژه هنگامی که با Mockito استفاده می شود، برای ایجاد جاسوسی بر روی یک شی واقعی اعمال می شود. جاسوس یک تمسخر جزئی است، به این معنی که شما می توانید برخی از روش های شی را مسخره کنید در حالی که رفتار واقعی روش های دیگر را حفظ کنید.

در اینجا برخی از کاربردهای رایج آن آورده شده است @Spy حاشیه نویسی:

  1. تمسخر جزئی:

    • اگر شیئی دارید که اکثر روشها باید رفتار واقعی خود را حفظ کنند اما یک یا دو روش باید مورد تمسخر قرار گیرند، می توانید از جاسوس استفاده کنید.
    • مثال:
     @Spy
     private ListString> spyList = new ArrayList();
    
     @Test
     public void testSpy() {
         spyList.add("Mockito");
         Mockito.verify(spyList).add("Mockito");
         assertEquals(1, spyList.size());
    
         Mockito.doReturn(100).when(spyList).size();
         assertEquals(100, spyList.size());
     }
    
  2. نادیده گرفتن رفتار روش واقعی:

    • شما می توانید از یک جاسوس برای نادیده گرفتن رفتار روش خاص یک شی واقعی استفاده کنید و در عین حال بقیه روش ها را دست نخورده نگه دارید.
    • مثال:
     @Spy
     private MyClass myClass = new MyClass();
    
     @Test
     public void testSpyWithMethodOverride() {
         Mockito.doReturn("Mocked Value").when(myClass).someMethod();
         assertEquals("Mocked Value", myClass.someMethod());
     }
    
  3. تأیید فراخوانی روش:

    • می‌توانید بررسی کنید که آیا روش‌های خاصی از جاسوس فراخوانی شده است یا خیر، که در هنگام آزمایش تعاملات مفید است.
    • مثال:
     @Spy
     private MyClass myClass = new MyClass();
    
     @Test
     public void testMethodCallVerification() {
         myClass.someMethod();
         Mockito.verify(myClass).someMethod();
     }
    
  4. ترکیب با @InjectMocks:

    • @Spy را می توان همراه با استفاده کرد @InjectMocks برای تزریق اشیاء جاسوسی شده به شی مورد آزمایش، امکان تمسخر جزئی در کلاس آزمایش شده را فراهم می کند.
    • مثال:
     @Spy
     private MyDependency dependency;
    
     @InjectMocks
     private MyService service;
    
     @Test
     public void testService() {
         Mockito.doReturn("Mocked Result").when(dependency).doSomething();
         assertEquals("Mocked Result", service.performAction());
     }
    
  5. تست کدهای قدیمی:

    • هنگامی که با کدهای قدیمی سروکار دارید که نمی‌توانید به راحتی آن‌ها را بازسازی کنید، استفاده از جاسوس به شما این امکان را می‌دهد تا روش‌های خاصی را بدون تغییر کد اصلی جداسازی و مسخره کنید.

به طور خلاصه، @Spy حاشیه نویسی زمانی مفید است که شما نیاز به کنترل یا تأیید رفتارهای خاص یک شی واقعی دارید در حالی که بقیه رفتار شیء را بدون تغییر نگه دارید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا