Java中的Mockito“在此处检测到错误的参数"

Mockito #39;Misplaced argument detected here#39; in Java(Java中的Mockito“在此处检测到错误的参数)
本文介绍了Java中的Mockito“在此处检测到错误的参数"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

限时送ChatGPT账号..

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

So I have this Mockito unit test:

@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);
}

对我来说看起来不错,但出于某种原因它说:

It looks fine for me, but for some reason it says:

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"))

我长期以来一直试图找出问题所在,但仍然不确定是什么导致了问题.请问有什么提示吗?

I have been trying to find out what's wrong for a long time, but still not sure what's causing the issue. Any hint please?

谢谢.

推荐答案

罪魁祸首是这部分:

.thenReturn(any(Orientation.class))

any() 应该与 When 结合使用.

any() is supposed to be used in conjunction with When.

做这样的事情:

@Mock
private Orientation orientationMock;

// ...

.thenReturn(orientationMock);

这篇关于Java中的Mockito“在此处检测到错误的参数"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Sending a keyboard event from java to any application (on-screen-keyboard)(将键盘事件从 java 发送到任何应用程序(屏幕键盘))
How to make JComboBox selected item not changed when scrolling through its popuplist using keyboard(使用键盘滚动其弹出列表时如何使 JComboBox 所选项目不更改)
Capturing keystrokes without focus(在没有焦点的情况下捕获击键)
How can I position a layout right above the android on-screen keyboard?(如何将布局放置在 android 屏幕键盘的正上方?)
How to check for key being held down on startup in Java(如何检查在Java中启动时按住的键)
Android - Get keyboard key press(Android - 获取键盘按键)