+1 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

من با استفاده از متد mock در Mockito یک کلاس یا interface را برای تست mock می کنم، حالا یک نیازمندی خاص دارم، برای تست، یک کلاس دارم که فقط می خواهم یک متد آن را mock کنم ولی بقیه متدهای آن کلاس mock نشود (متد mock تمام متدهای یک کلاس را mock می کند). چطور می توانم این کار را در Mockito انجام دهم؟

1 پاسخ

0 امتیاز
قبل توسط (1.1هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

این کار در Mockito با استفاده از متد spy امکانپذیر است کد زیر را مشاهده کنید:

UserServletImpl userServletImplSpy = spy(new UserServletImpl());
HttpServletRequest httpServletRequestMock = mock(HttpServletRequest.class);
HttpSession httpSessionMock = mock(HttpSession.class);

userServletImplSpy.setService(service);

doReturn(httpServletRequestMock).when(userServletImplSpy).getThreadLocalRequest();
doReturn(httpSessionMock).when(httpServletRequestMock).getSession();
doReturn("captcha").when(httpSessionMock).getAttribute(ConstantManger.CAPTCHA_TEXT);

userServletImplSpy.checkPerson(userHelperModel);

در مثال فوق تمام متدهای کلاس های HttpServletRequest و HttpSession باید mock می شدند که با استفاده از متد mock این کار انجام شده است ولی متد setService کلاس UserServletImpl نباید mock میشد بنابراین از متد spy برای این کار استفاده شد.

سوالات مشابه

0 امتیاز
1 پاسخ 215 بازدید
0 امتیاز
0 پاسخ 416 بازدید
+1 امتیاز
1 پاسخ 320 بازدید
+4 امتیاز
1 پاسخ 822 بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
0 امتیاز
1 پاسخ 647 بازدید
+1 امتیاز
1 پاسخ 336 بازدید
+1 امتیاز
1 پاسخ 380 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...