这是我要测试的类(它计算 HTTP 页面的大小):
import javax.ws.rs.core.MediaType;
import com.sun.jersey.api.client.*;
public class Loader {
private Client client;
public Loader(Client c) {
this.client = c;
}
public Integer getLength(URI uri) throws Exception {
return c.resource(uri) // returns WebResource
.accept(MediaType.APPLICATION_XML) // returns WebResource.Builder
.get(String.class) // returns String
.length();
}
}
当然这只是一个例子,不是现实生活中的解决方案。现在我正在尝试测试这个类:
public class LoaderTest {
@Test public void shouldCalculateLength() throws Exception {
String mockPage = "test page"; // length is 9
Client mockedClient = /* ??? */;
Loader mockedLoader = new Loader(mockedClient);
assertEquals(
mockPage.length(),
mockedLoader.getLength(new URI("http://example.com"))
);
}
}
我应该如何模拟 com.sun.jersey.api.client.Client
类?我正在尝试使用 Mockito,但任何其他框架都可以,因为我是这里的新手..
最佳答案
Jersey Test Framework 与您的问题没有太大关系,但稍后可能会派上用场。查看其中一位 Jersey 贡献者的这些博客条目;
http://blogs.oracle.com/naresh/entry/jersey_test_framework_makes_it
http://blogs.oracle.com/naresh/entry/jersey_test_framework_re_visited
回到主题,要测试您的 Loader
类,您只需使用从 Client.create()
获得的 Client
对其进行实例化。如果您使用的是 Maven,则可以创建一个虚拟测试端点(在 src/test/java 中)进行调用,Jersey 测试框架会将其加载到 Jetty 中。
关于java - 我应该如何模拟 Jersey HTTP 客户端请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3906035/