使用wiremock时连接被拒绝

San*_*Rey 10 java junit mockito spring-boot wiremock

我在 Junit 中有这段代码,在那里我清楚地将端口设置为 8888

when(clientUtils.getLinkUrl(eq(HOSTELS_MICROSERVICE.name()), eq(HOSTELS_MICROSERVICE.name()), anyMap()))
                .thenReturn("http://localhost:8888/HOSTELS/HOSTELSMethods");

stubFor(com.github.tomakehurst.wiremock.client.WireMock.get("/HOSTELS/HOSTELS_LIST").willReturn(
                aResponse().withStatus(200)
                        .withHeader("Content-Type", APPLICATION_JSON_VALUE)
                        .withBody(ResourceUtils.getResourceFileAsString ("__files/HOSTELS.json"))));
Run Code Online (Sandbox Code Playgroud)

但是当我运行测试时,我在这一行出现了这个错误:

stubFor(com.github.tomakehurst.wiremock.client.WireMock.get("/HOSTELS/HOSTELS_LIST").willReturn(..
Run Code Online (Sandbox Code Playgroud)

和错误:

wiremock.org.apache.http.conn.HttpHostConnectException: Connect to localhost:8080 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect
Run Code Online (Sandbox Code Playgroud)

mic*_*alk 10

WireMock文档:

  1. 如果您使用 Wiremock 作为 JUnit 4 规则来配置端口,请使用:
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;

...

@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(8888));
Run Code Online (Sandbox Code Playgroud)
  1. 如果您是从 Test 类开始的(例如@Before):
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;

...

WireMockServer wm = new WireMockServer(options().port(8888));

wm.stubFor(...);
wm.start();
Run Code Online (Sandbox Code Playgroud)
  1. 使用默认实例的静态配置:
WireMock.configureFor(8888);
Run Code Online (Sandbox Code Playgroud)

  • 嗨@ses,我最近刚刚弄清楚这一点。我正在使用 Kotlin 和 JUnit 5,但遇到了“HttpHostConnectException”问题。我通过将实际的“WireMockServer”实例添加到“stubFor”或“verify”方法中解决了这个问题,即“wireMockServer.stubFor()”或“wireMockServer.verify()”。完成此操作后,测试就可以工作了。希望能帮助到你。 (14认同)
  • 为了完整起见,值得一提的是您可能还必须启动服务器。我选择了选项 2.“new WireMockServer()”,但忘记调用“wm.start()”并收到“连接被拒绝” (3认同)
  • 嗯仍然: org.apache.http.conn.HttpHostConnectException:连接到 localhost:8080 [localhost/127.0.0.1] 失败:连接被拒绝(连接被拒绝)。单元5 (2认同)

bil*_*ydh 9

将我之前的评论发布为答案,因为它似乎对一些人有所帮助。谢谢@jmrah。:)

对于KotlinJUnit5,可以通过将实际WireMockServer实例添加到stubForverify方法调用来解决此问题。

wireMockServer.stubFor()
Run Code Online (Sandbox Code Playgroud)

或者

wireMockServer.verify()
Run Code Online (Sandbox Code Playgroud)

添加此后,测试应该可以工作。