Connection refused when using wiremock

15,480

For Java users

Based on the WireMock docs.

There are 3 possibilities to use WireMock in your tests :

  1. If you are using Wiremock as JUnit 4 rule to configure the port use :
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;

...

@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(8888));
  1. If you are using new instance and start it from your Test class (for example @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(...);
    }
}
  1. With static configuration of default instance (not using new instance in your test) :
WireMock.configureFor(8888);

For Kotlin users

If you are using kotlin you can add actual wiremock instance to stubFor and verify calls like wm.stubFor() and configure the port like in option 3 of this answer.

Share:
15,480

Related videos on Youtube

Sandro Rey
Author by

Sandro Rey

Bendiciones y unos Nullpointers. y si no sabes la respuesta a mis preguntas que te den por el xxxx dos veces.

Updated on June 04, 2022

Comments

  • Sandro Rey
    Sandro Rey almost 2 years

    I have this piece of code in a Junit, where I clearly set the port to 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"))));
    

    but when I run the test I got this error on this line:

    stubFor(com.github.tomakehurst.wiremock.client.WireMock.get("/HOSTELS/HOSTELS_LIST").willReturn(..
    

    and the error:

    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
    
  • ses
    ses over 4 years
    hmm still: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8080 [localhost/127.0.0.1] failed: Connection refused (Connection refused). unit 5
  • billydh
    billydh about 4 years
    hi @ses i recently just figured this out. i am using Kotlin and JUnit 5, but had that HttpHostConnectException issue. I resolved it by adding the actual WireMockServer instance to my stubFor or verify methods, i.e. wireMockServer.stubFor() or wireMockServer.verify(). After doing this, the tests work. Hope it helps.
  • Anly
    Anly almost 3 years
    For completeness, it's worth mentioning that you might have to also start the server. I went with option 2. with new WireMockServer() but forgot to call wm.start() and was getting Connection refused
  • jmrah
    jmrah almost 2 years
    @billydh, you should add your comment as an answer. It worked for me, and I'm sure a lot of other people too. Thanks!