使用 wiremock 时连接被拒绝
Connection refused when using 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"))));
但是当我 运行 测试时,我在这一行遇到了这个错误:
stubFor(com.github.tomakehurst.wiremock.client.WireMock.get("/HOSTELS/HOSTELS_LIST").willReturn(..
和错误:
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
对于 Java 用户
基于 WireMock
文档。
在您的测试中有 3 种可能使用 WireMock :
- 如果您使用 Wiremock 作为 JUnit 4 规则来配置端口,请使用:
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
...
@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(8888));
- 如果您正在使用新实例并从您的测试启动它 class(例如
@Before
):
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
...
public class Test {
WireMockServer wm;
@BeforeEach
void setUp() {
wm = new WireMockServer(options().port(8888));
wm.start();
}
@Test
void test() {
wm.stubFor(...);
}
}
- 使用默认实例的静态配置(不在测试中使用新实例):
WireMock.configureFor(8888);
对于 Kotlin 用户
如果您使用的是 kotlin,您可以将实际的 wiremock 实例添加到 stubFor
和 verify
调用,如 wm.stubFor()
并像此答案的选项 3 中那样配置端口。
我在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"))));
但是当我 运行 测试时,我在这一行遇到了这个错误:
stubFor(com.github.tomakehurst.wiremock.client.WireMock.get("/HOSTELS/HOSTELS_LIST").willReturn(..
和错误:
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
对于 Java 用户
基于 WireMock
文档。
在您的测试中有 3 种可能使用 WireMock :
- 如果您使用 Wiremock 作为 JUnit 4 规则来配置端口,请使用:
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
...
@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(8888));
- 如果您正在使用新实例并从您的测试启动它 class(例如
@Before
):
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
...
public class Test {
WireMockServer wm;
@BeforeEach
void setUp() {
wm = new WireMockServer(options().port(8888));
wm.start();
}
@Test
void test() {
wm.stubFor(...);
}
}
- 使用默认实例的静态配置(不在测试中使用新实例):
WireMock.configureFor(8888);
对于 Kotlin 用户
如果您使用的是 kotlin,您可以将实际的 wiremock 实例添加到 stubFor
和 verify
调用,如 wm.stubFor()
并像此答案的选项 3 中那样配置端口。