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

Wiremock错误-此WireMock实例中没有存根映射

章增
2023-03-14

我已经用一个REST/HTTP请求模拟示例实现了一个基本的WireMock。服务器代码实现如下。

有了这段代码,我在向Postman发出get请求时得到如下错误(即GET http://127 . 0 . 0 . 1:8089/some/thing)。

无法提供响应,因为此WireMock实例中没有存根映射。

我的设置/代码中缺少什么?

import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;

public class MockApp {

    private WireMockServer wireMockServer;

    public MockApp(String testSpec) {
        wireMockServer = new WireMockServer(WireMockConfiguration.options().
                port(8089).
                usingFilesUnderDirectory(testSpec).
                disableRequestJournal());
    }

    public void start() {
        wireMockServer.start();
    }

    public void stop() {
        wireMockServer.stop();
    }
}

主要功能是:

public class MockMain {

    public static void main(String[] args) {

        String baseDir = System.getProperty("user.dir");
        String testResource = baseDir + "/resources/testconfig/";

        MockAMS mockAMS = new MockAMS(testResource);

        mockAMS.start();
    }
}

在“resources/testconfig”下,有一个名为mapping的文件。json包含:

{
  "request": {
    "method": "GET",
    "url": "/some/thing"
  },
  "response": {
    "status": 200,
    "body": "Hello world!",
    "headers": {
      "Content-Type": "text/plain"
    }
  }
}

共有1个答案

邹浩
2023-03-14

我找到了解决办法。所以,基本上我们需要在由testResource变量标识的目录下创建一个名为mappings(确切名称)的文件夹。所以在上面的代码示例中,mapping.json文件将存储在以下位置:MockApp/Resources/testconfig/mappings/mapping.json。

一旦完成,它将打印以下输出。从日志中可以看出,“存根映射大小为1”。一旦在代码中添加了下面一行,就会打印出来。

System.out.println("Stub mapping size: " + wireMockServer.getStubMappings().size());

Stub mapping size: 1
{
  "id" : "da5735a6-b6cc-45aa-8256-fb88b5670610",
  "request" : {
    "url" : "/some/thing",
    "method" : "GET"
  },
  "response" : {
    "status" : 200,
    "body" : "Hello world!",
    "headers" : {
      "Content-Type" : "text/plain"
    }
  },
  "uuid" : "da5735a6-b6cc-45aa-8256-fb88b5670610"
}
 类似资料:
  • 我想在启动我的cucumber-jvm测试之前加载我所有的wiremck存根文件。 根据wiremock docs,通过API只能推送一个文件。不是散装的。我认为在启动测试之前,应该在测试项目中使用java代码。 通过代码实现这一点的最佳方式是什么。

  • 我有一个存根文件,我通过c#管理api发送到一个独立的线子实例。当我通过postman发送时,我得到了预期的响应,除了响应体总是空的,即使在我的文件中我有这个: } 我看到预期的标题a b,但正文中什么都没有。另外,如果我将其更改为纯文本: 这也没用-我做错了什么?

  • 我使用WireMock来存根来自远程服务器的响应。在文件夹中,我有许多为存根设置规则的文件。这里的例子: { 如您所见,当我收到请求时,会从文件

  • WireMock 是一个灵活的库用于 Web 服务测试,和其他测试工具不同的是,WireMock 创建一个实际的 HTTP服务器来运行你的 Web 服务以方便测试。 支持 HTTP 响应存根、请求验证、代理/拦截、记录和回放。

  • 我想在 wiremock 中将 调用设置为 json 配置存根。 需要提供哪些附加配置? 我有下面的json配置 以上内容对于< code>http非常适用,但对于< code>https:则不适用 当更改为时,我会看到以下内容 我参考了这个答案,但不确定第一个答案中第二步的密码 即 将认证导入密钥库

  • 我正在尝试使用线子 JSON 存根文件模拟查询参数。 它的工作原理,当我这样做: 但是,当我更改查询参数以使用这样的专用字段时,它不再起作用: 知道为什么吗? 测试请求看起来像 http://some-host/posts?id=1