我有两张具有相同参数的地图。我想模拟其中一个来测试我的课程。但我不知道它不起作用的原因这是我的课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()); } @Testpublic void testSomething() throws Exception { a.doSomething("blabla"); }}
3 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
@InjectMocks
尝试通过以下方式注入依赖项
首先使用构造函数。
然后是属性设置器。
然后现场注入。
#3 可能适合你。请尝试以下操作:
将映射初始化从构造函数删除到其 setter 函数。
将变量名称更改
mapTest
为map1
测试类中的变量名称。也
map2
类似地定义。然后 InjectMocks 应该找到一个匹配的字段来注入。
分享更多代码部分以获得更准确的答案。
慕村9548890
TA贡献1884条经验 获得超4个赞
您需要在两个类中具有相同的名称和相同的类型:
//main class
private HashMap<String, Foo> map;
//test class
@Mock
private HashMap<String, Foo> map;
添加回答
举报
0/150
提交
取消