mockito.when 主要用于指定返回值,而void方法没有返回值。因此,mockito.when无法直接应用于void方法。 处理void方法模拟的解决方案 对于void方法,Mockito 提供了其他方法来模拟其行为,例如doAnswer、doNothing等。 doNothing:用于模拟没有副作用的void方法。 doAnswer:允许你提供一个自定义的答案(Action),这在需要执行一些...
captor一般是与given或者verify等方法配合使用。 @MockList mockedList; @Captor ArgumentCaptor argCaptor;@Testpublic void whenUseCaptorAnnotation_thenTheSam() { mockedList.add("one"); Mockito.verify(mockedList).add(argCaptor.capture()); assertEquals("one", argCaptor.getValue());} 1. InjectMocks 使...
doThrow(new RuntimeException()).when(mockObject).methodWithVoidReturn(); 因为无法使用常规的when(mockObject.foo()).thenReturn(...)的方法。 当时我就纳闷,为何我想 mock 一个返回值为 void 的方法,却是在模拟抛出一个异常,现在想来如果一个返回值为 void 的方法,为何要去 mock 这个方法呢? 回想一个...
doReturn(false).when(listMock).add(anyString()); boolean added = listMock.add(randomAlphabetic(6)); assertThat(added,is(false)); 3.when().thenThrow()模拟异常(方法返回类型非void) @Test(expected = IllegalStateException.class)publicvoid givenMethodIsConfiguredToThrowException_whenCallingMethod_thenE...
Random random = mock(Random.class); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { return 1; } }).when(random).nextInt(); Mockito 使用 doNothing 让 void 函数什么都不做 doNothing 用于让 void 函数什么都不做。因为 mock 对象中,void 函数...
return null; }).when(mockedUserRepository).updateName(anyLong(),anyString()); userService.updateName(1L,"FunTester"); verify(mockedUserRepository, times(1)).updateName(1L,"FunTester"); } 使用doThrow()引发异常 如果要在调用方法时引发异常,则可以使用嘲笑的doThrow()方法。
when(stockService.getPrice(teslaStock)).thenReturn(500.00) 那么,如果是想多次调用getPrice()方法,会怎样呢?能否每次调用可以指定不同的结果么?如果没有指定呢?笔者将之前的用例进行了改造, 代码语言:javascript 复制 @TestpublicvoidtestPortfolioGetMarketValueMultiTimes(){//Creates a list of stocks to be add...
publicclassMyListextendsAbstractList<String>{@OverridepublicStringget(finalintindex){returnnull;}@Overridepublicintsize(){return1;}} When/Then常见用法常见用法 1.方法一:when().thenReturn()模拟方法的返回 MyList listMock=Mockito.mock(MyList.class);when(listMock.add(anyString())).thenReturn(false);...
通过mockito的when方法可以模拟方法的返回值,包括更新返回的对象。具体步骤如下: 导入mockito库:在项目的依赖中添加mockito库的引用。 创建被模拟的对象:使用mockito的mock方法创建一个被模拟的对象。 设置方法的返回值:使用mockito的when方法来设置方法的返回值。例如,假设有一个名为"getObject"的方法,可以使用...
@TestpublicvoidwhenAddCalledAnswered(){MyList myList=mock(MyList.class);doAnswer((Answer)invocation->{Object arg0=invocation.getArgument(0);Object arg1=invocation.getArgument(1);assertEquals(3,arg0);assertEquals("answer me",arg1);returnnull;}).when(myList).add(any(Integer.class),any(String.cla...