gpt4 book ai didi

java - 如何在mockito中模拟 map ?

转载 作者:行者123 更新时间:2023-12-02 09:26:11 27 4
gpt4 key购买 nike

我有两个具有相同参数的 map 。我想模拟其中一个来测试我的类(class)。但我不知道它不起作用的原因

这是我的课

public class A {
private Map<String, Foo> map1;
private Map<String, Foo> map2;

public A() {
this.map1 = new HashMap<String,Foo>();
map1.put("one",new Foo());

this.map2 = new HashMap<String, Foo>();
map2.put("two", new Foo());
}

public void doSomenthing(String str){
Foo foo = map1.get(str)
//other actions
}

}

这是我的测试类:

public class ATest{

@InjectMocks
private A a;

@Mock
private HashMap<String, Foo> mapTest;

@Before
public void initialize() throws Exception {
when(mapTest.get(Mockito.anyString())).thenReturn(new Foo());
}

@Test
public void testSomething() throws Exception {
a.doSomething("blabla");
}
}

最佳答案

@InjectMocks 尝试通过以下方式注入(inject)依赖项

  1. 首先使用构造函数。
  2. 然后是属性 setter 。
  3. 然后进行字段注入(inject)。

#3 可能适合您。请尝试以下操作:

  • 将映射初始化从构造函数移至其 setter 函数。
  • 在测试类中将变量名称 mapTest 更改为 map1
  • 也类似地定义map2
  • 然后 InjectMocks 应该找到一个匹配的字段来注入(inject)。

分享更多代码部分以获得更准确的答案。

关于java - 如何在mockito中模拟 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58325819/

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