返回值时发生InvalidArgumentException

时间:2019-05-03 21:34:41

标签: java unit-testing jmockit

我是JMockit的新手。我最近尝试编写单元测试,在其中必须测试带有参数的系统方法。在被测方法内部,参数实例链接其多个方法以返回Collection对象。

下面的代码模拟了我所面临的确切情况。我正在使用 jmockit-1.9

被测系统

public class SystemUnderTest {

    public void doSomething(Dependency dependency) {
        List<String> list = dependency.getMap().get("some-key");
        System.out.println("got list -> " + list);
    }
}

依赖关系类

public class Dependency {       
    private Map<String, List<String>> map;    
    public Map<String, List<String>> getMap() {
        return map;
    }    
    public void setMap(Map<String, List<String>> map) {
        this.map = map;
    }
}

测试

@Test
public void testDoSomething(
        @Mocked Dependency dependency,
        @Mocked Map<String, List<String>> map,
        @Mocked List<String> list
        ) {

    new NonStrictExpectations() {{
        dependency.getMap(); result = map;
        map.get(anyString); result = list; //exception occurs here  
    }};

    SystemUnderTest sut = new SystemUnderTest();        
    sut.doSomething(dependency);        
}

运行测试时,出现以下异常

java.lang.IllegalArgumentException: Invalid return value for method returning class java.util.HashMap

在此行

 map.get(anyString); result = list;

可以清楚地看到,map.get()的返回类型应该是List,但是它表示该方法正在返回HashMap

我在做什么错了?

任何帮助将不胜感激;

0 个答案:

没有答案