Java 中的 Mockito 'Misplaced argument detected here'

Mockito 'Misplaced argument detected here' in Java

所以我有这个 Mockito 单元测试:

@Test
    public void createCard() {

    when(jwtServiceMock.getId(anyString())).thenReturn(validUserToken);
    when(profileServiceMock.getProfile(validUserToken)).thenReturn(mock(Profile.class));
    when(cardServiceMock.countViewableCardsCreatedOrOwnedBy(anyObject())).thenReturn(5L);
    when(cardServiceMock.countCardsCreatedOrOwned(anyObject())).thenReturn(10L);

    final Card expectedCard = getCard();

    when(cardServiceMock.createCard(anyString(), anyListOf(String.class), anyListOf(String.class),
            any(CreatorRecipientCriteria.class), anyListOf(ImageMask.class))).thenReturn(expectedCard);

    when(imageService.createCardImage(any(MultipartFile.class), anyString(), any(ImageMask.class))).thenReturn(any(Orientation.class));

    final Card receivedCard = cardControllerMock.createCard(validUserToken, mock(MultipartFile.class), "card");

    assertEquals(receivedCard, expectedCard);
}

它对我来说很好,但出于某种原因它说:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Misplaced argument matcher detected here:

-> at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:53)

You cannot use argument matchers outside of verification or stubbing.
Examples of correct usage of argument matchers:
    when(mock.get(anyInt())).thenReturn(null);
    doThrow(new RuntimeException()).when(mock).someVoidMethod(anyObject());
    verify(mock).someMethod(contains("foo"))

很长一段时间以来,我一直试图找出问题所在,但仍不确定是什么导致了问题。有什么提示吗?

谢谢。

罪魁祸首是这部分:

.thenReturn(any(Orientation.class))

any() 应该与 When.

一起使用

做这样的事情:

@Mock
private Orientation orientationMock;

// ...

.thenReturn(orientationMock);