gpt4 book ai didi

java - Mockito:如何在when语句中传递特定的 map 作为参数?

转载 作者:行者123 更新时间:2023-12-01 12:30:20 26 4
gpt4 key购买 nike

我想在 when 语句中传递特定的 map 作为参数。

Map<String, String> someSpecificMap = new HashMap<>;

@Before
public void setUp() {


someSpecificMap.put("key", "value");

when(mockedObject.get(new MapParametersMatcher()).thenReturn(1);
}

@Test
public void test() {
//some code that invokes mocked object and passes into it map with ("key", "value")
}



class MapParametersMatcher extends ArgumentMatcher {

@Override
public boolean matches(Object argument) {

if (argument instanceof Map) {
Map<String, String> params = (Map<String, String>) argument;
if (!params.get("key").equals("value")) {
return false;
}

}

return true;
}
}

但是没有调用 matches() 方法。并且测试失败。

最佳答案

如果您想检查 .equal 返回 true 的特定对象,则不需要使用参数匹配器,只需将其作为参数传递即可:

@Before
public void setUp() {
Map<String, String> = new HashMap<>();
someSpecificMap.put("key", "value");
when(mockedObject.get(someSpecificMap).thenReturn(1);
}

如果传递一个等于 someSpecificMap 的映射,即具有一个元素“key”:“value”的映射,则将返回模拟返回值 1

如果你想检查 map 是否有特定的键,那么我建议你使用 Hamcrest hasEntry 匹配器:

import static org.hamcrest.Matchers.hasEntry;
import static org.mockito.Matchers.argThat;
@Before
public void setUp() {
when(mockedObject.get((Map<String, String>) argThat(hasEntry("key", "value"))))
.thenReturn(1);
}

对于通过键“key”:“value”传递的映射的所有 mockedObject.get 调用,此模拟设置都会返回 1,其他键可能存在或不存在。

关于java - Mockito:如何在when语句中传递特定的 map 作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25969161/

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