+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 پاسخ 216 بازدید
0 امتیاز
0 پاسخ 420 بازدید
+1 امتیاز
1 پاسخ 321 بازدید
+4 امتیاز
1 پاسخ 824 بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
0 امتیاز
1 پاسخ 649 بازدید
+1 امتیاز
1 پاسخ 339 بازدید
+1 امتیاز
1 پاسخ 381 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...