+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 پاسخ 221 بازدید
0 امتیاز
0 پاسخ 423 بازدید
+1 امتیاز
1 پاسخ 327 بازدید
+4 امتیاز
1 پاسخ 831 بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
0 امتیاز
1 پاسخ 654 بازدید
+1 امتیاز
1 پاسخ 343 بازدید
+1 امتیاز
1 پاسخ 386 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...