+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 پاسخ 312 بازدید
0 امتیاز
0 پاسخ 468 بازدید
+1 امتیاز
1 پاسخ 426 بازدید
+4 امتیاز
1 پاسخ 939 بازدید
+1 امتیاز
1 پاسخ 1.2هزار بازدید
0 امتیاز
1 پاسخ 783 بازدید
+1 امتیاز
1 پاسخ 455 بازدید
+1 امتیاز
1 پاسخ 502 بازدید
سوال شده 7 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...