How to mock void methods with Mockito

前端 未结 9 2208
情话喂你
情话喂你 2020-11-22 12:21

How to mock methods with void return type?

I implemented an observer pattern but I can\'t mock it with Mockito because I don\'t know how.

And I tried to fin

9条回答
  •  耶瑟儿~
    2020-11-22 13:22

    Take a look at the Mockito API docs. As the linked document mentions (Point # 12) you can use any of the doThrow(),doAnswer(),doNothing(),doReturn() family of methods from Mockito framework to mock void methods.

    For example,

    Mockito.doThrow(new Exception()).when(instance).methodName();
    

    or if you want to combine it with follow-up behavior,

    Mockito.doThrow(new Exception()).doNothing().when(instance).methodName();
    

    Presuming that you are looking at mocking the setter setState(String s) in the class World below is the code uses doAnswer method to mock the setState.

    World mockWorld = mock(World.class); 
    doAnswer(new Answer() {
        public Void answer(InvocationOnMock invocation) {
          Object[] args = invocation.getArguments();
          System.out.println("called with arguments: " + Arrays.toString(args));
          return null;
        }
    }).when(mockWorld).setState(anyString());
    

提交回复
热议问题