gpt4 book ai didi

java - org.mockito.exceptions.misusing.InvalidUseOfMatchersException 参数匹配器放错位置

转载 作者:太空宇宙 更新时间:2023-11-04 14:02:57 24 4
gpt4 key购买 nike

我收到以下异常

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

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

代码行

@Mock    
Template templateParser = new TemplateParser();
when(templateParser.getLayoutIdsFromTemplate(any(HashMap.class)))
.thenReturn(Arrays.asList("id1", "id2"));

我模拟的函数如下

public class TemplateParser {
public List<String> getLayoutIdsFromTemplate(HashMap<String, Object> parsedTemplate)
{
List<String> listOfLayoutIds = new ArrayList<String>();

//Loading listOfLayoutIds here

return listOfLayoutIds;
}
}

谁能告诉我问题是什么?

最佳答案

你的模拟方法getLayoutIdsFromTemplate正在接收输入的 HashMap<String, Object>作为参数,不是简单的HashMap 。这就是InvalidUseOfMatchersException的原因.

如果你可以进行一些重构,你就可以解决这个问题:

1) 更改您的接收方式 Map<String, Object>而是 Hashmap<String, Object> :

   public List<String> getLayoutIdsFromTemplate(Map<String, Object> parsedTemplate) {
...
}

2) 在您的测试类中,使用 Mockito.anyMapOf(String.class, Object.class)) 匹配参数而不是Mockito.any(HashMap.class)) :

when(templateParser.getLayoutIdsFromTemplate(anyMapOf(String.class, Object.class))).thenReturn(Arrays.asList("id1", "id1"));

希望有帮助。

关于java - org.mockito.exceptions.misusing.InvalidUseOfMatchersException 参数匹配器放错位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29142988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com