+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 پاسخ 228 بازدید
0 امتیاز
0 پاسخ 426 بازدید
+1 امتیاز
1 پاسخ 329 بازدید
+4 امتیاز
1 پاسخ 839 بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
0 امتیاز
1 پاسخ 660 بازدید
+1 امتیاز
1 پاسخ 349 بازدید
+1 امتیاز
1 پاسخ 391 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...