Stubbing a method that takes Class as parameter with Mockito

后端 未结 3 672
迷失自我
迷失自我 2020-12-29 01:08

There is a generic method that takes a class as parameter and I have problems stubbing it with Mockito. The method looks like this:

public 

        
3条回答
  •  礼貌的吻别
    2020-12-29 01:38

    The problem is, you cannot mix argument matchers and real arguments in a mocked call. So, rather do this:

    when(serviceValidatorStub.validate(
        any(),
        isA(UserCommentRequestValidator.class),
        eq(UserCommentResponse.class),
        eq(UserCommentError.class))
    ).thenReturn(new UserCommentResponse());
    

    Notice the use of the eq() argument matcher for matching equality.

    see: https://static.javadoc.io/org.mockito/mockito-core/1.10.19/org/mockito/Matchers.html#eq(T)

    Also, you could use the same() argument matcher for Class types - this matches same identity, like the == Java operator.

提交回复
热议问题