JMockit mock返回String而不是提供的List <string>

时间:2015-10-16 20:43:41

标签: java unit-testing jmockit expectations

当然,我使用JMockit已经有一段时间了,但我不记得这种困难。我对一些非常简单的代码进行了非常简单的测试。但即使我设置了returns = List,模拟方法仍然只返回一个字符串!这是测试:

ResponseWrapper(UriInfo uriInfo) {
    MultivaluedMap<String,String> params = uriInfo.getQueryParameters();
    String skip = getParam(params, "skip");
}

private String getParam(MultivaluedMap<String,String> params, String name) {
    String result = null;
    List<String> list = params.get(name);  // <== Cast exception occurs here
    if (list != null) {
        result = list.get(0);
    }   
    return result;
}

这是它正在测试的代码:

gluegen-rt-natives-windows-amd64

请注意,“params”是多值地图,而不是地图。所以params.get()应该返回一个List。如您所见,我正在设置返回List但代码中的模拟get()仅返回包含的String,这会导致转换异常。

我也尝试过使用return(...)。我已经尝试以单独的步骤制作arSkip并将其定义为final。什么都行不通。

我怀疑JMockit是将我的列表解释为顺序响应,但应该看到该类型与方法的返回类型匹配。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

这是从JMockit 1.11(2014年8月)开始的回归。它将在版本1.20(2015年10月)中修复。