当前位置: 首页 > 知识库问答 >
问题:

初始化网络模拟 HTTP 服务器时的紧急情况

沃宇
2023-03-14

我正在尝试测试对 HTTP 服务器具有基础 GET 调用的代码。

我正在尝试使用WireMock,根据“入门指南”,我有以下代码:

@Rule
public WireMockRule wireMockRule = 
    new WireMockRule(WireMockConfiguration.wireMockConfig().port(8888)); // No-args constructor defaults to port 8080

@BeforeClass
public static void beforeClass(){
    stubFor(get(urlEqualTo("/Path/Get"))
            .willReturn(aResponse()
                    .withStatus(200)
                    .withBody("[1]")));
}

@Test
public void testGetRanking() throws Exception {
    Fetcher fetcher = new Fetcher("http://localhost:8888",null);
    int rankinganking = fetcher.getRanking("Max");
    Assert.assertEquals(1, ranking);
}

运行测试时,我得到以下堆栈跟踪:

wiremock.org.apache.http.conn.HttpHostConnectException: Connect to localhost:8080 [localhost/127.0.0.1] failed: Connection refused
at wiremock.org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)
at wiremock.org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
at wiremock.org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
at wiremock.org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
...

错误涉及端口8080,但我将端口配置为8888。我知道默认情况下WireMock以端口8080启动,因此这可能是其内部配置的问题。

这里有什么问题?

共有1个答案

卞浩漫
2023-03-14

这里的问题是@BeforeClass在@rule之前执行。将存根移动到@Before方法或直接移动到测试中即可解决问题。

 类似资料:
  • 有许多方法可以使用mockito初始化模拟对象。其中什么是最好的方法? 1. 建议我有没有比这些更好的方法...

  • Twisted Twisted 是一个事件驱动的网络引擎。他可以被用来构建多种网络协议的应用程序,包括:HTTP 服务器和客户端;使用 SMTP、POP3、IMAP 或者 SSH 协议测应用程序和 IM (即时消息)等应用 更多。 PyZMQ PyZMQ 是 ZeroMQ 的 Python 绑定。ZeroMQ 是一个高性能的异步消息库,它的一个很大的优势在于其可以被用作一个消息队列而不需要消息代理

  • 我正在用Apache CXF 2.7.8开发web服务。我使用wsdl2java来生成SEI和实现。有数百个web服务endpoint。 我使用嵌入式码头。 当服务器启动时,初始化每个endpoint需要几个小时。 我曾经使用 Endpoint.publish(地址、实现器)方法发布endpoint,但我发现通过这种方式,可以为每个服务创建一个 JAXBContext 实例。我修复了为每个服务使用

  • Serenity 使用服务定位器模式(service locator pattern)抽象其依赖,以使其可以与你所选的库(libraries)和服务提供者(service providers)一起工作。 例如,Serenity 并不关心你是如何存储用户,但是它可以通过抽象(IAuthorizationService、IUserRetrieveService 等)查询当前用户。 与你在应用程序中使用

  • 问题内容: 我正在尝试使用mgo将objectid字符串转换为bson ObjectId格式, idk为什么,但是如果我输入了错误/无效的输入字符串,我的应用程序就会出现运行时恐慌 我该如何预防呢?谢谢 问题答案: 文档,如果您传递无效的对象ID将恐慌: ObjectIdHex从提供的十六进制表示形式返回ObjectId。 以无效的十六进制表示形式调用此函数将导致运行时恐慌。 请参见IsObjec

  • 问题内容: 有很多方法可以使用MockIto初始化模拟对象。其中最好的方法是什么? 1。 2。 [编辑] 3。 如果有其他方法可以建议我… 问题答案: 对于模拟初始化,使用或是严格等效的解决方案。从MockitoJUnitRunner的javadoc中: 当你已经在测试用例上配置了特定的运行器时,可以使用第一个解决方案(带有)。 第二个解决方案(带有)更经典,也是我的最爱。代码更简单。使用转轮提供