5

我正在为 JERSEY 项目编写单元测试。

对于没有查询字符串的方法,我可以实例化控制器并调用该方法。

也适用于路径中的参数,因为它们显示为方法的字符串参数。

但是当我得到 queryStrings 模式有一个特殊的参数(@Context UriInfo url)

如何在单元测试中构建 UriInfo 参数?为什么这个类没有构造函数?

4

2 回答 2

7

如果您在测试中使用 Mockito,则可以模拟出 UriInfo:

import java.net.URI;
import javax.ws.rs.core.UriInfo;

UriInfo mockUriInfo = mock(UriInfo.class);
when(mockUriInfo.getRequestUri()).thenReturn(new URI("http://www.test.com/go"));
于 2014-01-23T19:36:49.900 回答
2

UriInfo是一个接口,所以你不能直接创建它的对象。您需要对其进行子类化并创建自己的UriInfo类。因此,您的 uriinfo 类应将 String uri/url 转换为 UriInfo 对象。

public class UriInformation implements UriInfo {
    MultivaluedMap<String, String> pathParamMap;
    MultivaluedMap<String, String> queryParamMap;
    public UriInformation(UriInfo uriInfo) {
        //parse uriInfo 
    }
 //setters/getters
}

因此,您可以通过这种方式对资源进行单元测试,而无需在 tomcat/server 中运行它。

于 2013-05-17T08:59:42.020 回答