【问题标题】:WireMock stub creation fails: expects 201 but gets 200WireMock 存根创建失败:期望 201 但得到 200
【发布时间】:2015-04-28 14:07:34
【问题描述】:

我是 WireMock 的新手,并试图让我的第一个单元测试使用它。现在,按照wiremock.org 上的文档,我写了这个

    WireMockConfiguration config = wireMockConfig().port(9089).httpsPort(8443);
    m_wireMockServer    =       new WireMockServer(config);

    m_wireMockServer.start();
    WireMock.configureFor("localhost", 9089);
    givenThat(get(urlEqualTo("/some/thing"))
    .willReturn(aResponse()
        .withHeader("Content-Type", "text/plain")
        .withBody("Hello world!")));

我希望这会向 /some/thing 发出任何 http 请求以被捕获。在给定的调用中,它给了我以下异常:

com.github.tomakehurst.wiremock.client.VerificationException: Expected status 201 for http://localhost:9089/__admin/mappings/new but was 200
at com.github.tomakehurst.wiremock.client.HttpAdminClient.postJsonAssertOkAndReturnBody(HttpAdminClient.java:151)
at com.github.tomakehurst.wiremock.client.HttpAdminClient.addStubMapping(HttpAdminClient.java:65)
at com.github.tomakehurst.wiremock.client.WireMock.register(WireMock.java:130)
at com.github.tomakehurst.wiremock.client.WireMock.register(WireMock.java:126)
at com.github.tomakehurst.wiremock.client.WireMock.givenThat(WireMock.java:65)

我错过了什么?创建存根有什么问题?

【问题讨论】:

  • 这里先从 URL 的区别说起。 get 方法调用中的 URL 与断言失败的 URL 不同。
  • 是的,我想使用 /some/thing 的模拟行为的测试甚至没有从这里开始。我希望对 /some/thing 的请求表现得像为我的测试定义的那样。但是在注册此行为时会发生异常。注册返回200,但我理解的需要201。

标签: java unit-testing wiremock


【解决方案1】:

我的猜测是,您在测试运行之间一直在后台运行 Wiremock,因此当您在测试中设置新映射时,映射并不是真正的新映射,因为已经存在一个并且 Wiremock 响应200(确定)而不是 201(已创建)。

为了验证这个假设,尝试在分配给 Wiremock 的端口上定位进程,如果有,将其杀死并再次运行测试。

【讨论】:

  • 与此相关,我面临与问题作者相同的问题,并发现我实际上在分配给 WireMock 的同一端口上本地运行了一项服务。关闭本地运行的应用程序为我解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
相关资源
最近更新 更多