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

如何发送由标头值驱动的线模拟存根响应

云令
2023-03-14

我需要用wiremock构建一个存根,并使用一个简单的规则让它基于某个标头返回一个响应或另一个响应:

  • 如果标头以 400 开头,则返回错误请求响应
  • 如果标头以 500 开头,则发回内部服务器错误响应
  • 对于任何其他标头,请发回已接受响应
    {
      "request": {
        "request": {
          "method": "POST",
          "urlPattern": "/v1/my/path"
        }
      },
      "response": {
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyFileName": "files/{{request.headers.<first.three.characers.of.my.header matching 400/500 or 202 otherwise>}}-response.json"
      }
    }

提前感谢您的意见

共有1个答案

解晟睿
2023-03-14

如果您只需要一个映射,那么您必须编写一个自定义的扩展来实现这一点。我不相信有足够智能的解析只返回前三个字符。此外,您需要为每个可能在头中发送的状态代码准备一个JSON文件。

相反,您可以有三个单独的映射,其中包含所需的匹配项。

{
    "priority": 1,
    "request": {
        "url": "/some/path",
        "headers": {
            "some-header": {
                "matches": "400.*"
            }
        }
    },
    "response": {
        "status": 400,
        "bodyFileName": "some-400-response.json",
    }
}

{
    "priority": 1,
    "request": {
        "url": "/some/path",
        "headers": {
            "some-header": {
                "matches": "500.*"
            }
        }
    },
    "response": {
        "status": 500,
        "bodyFileName": "some-500-response.json",
    }
}
{
    "priority": 2,
    "request": {
        "url": "/some/path"
    },
    "response": {
        "status": 200,
        "bodyFileName": "some-other-response.json",
    }
}

这些映射中发生的两件主要事情是:

  • 使用优先级(1 用于特定 400/500 案例,2 用于一般情况)
  • 标头值匹配(前三个字符的正则表达式匹配,然后标头其余部分的 (.*) 匹配)
 类似资料:
  • 我正在使用nginx和Firebug+FirePHP,当我试图加载页面时,我得到了一个错误: 我们在开发环境中记录了很多东西,我想这就是使用FirePHP时出现问题的原因。在这里阅读了类似的其他问题后,似乎有以下设置之一:

  • 问题内容: 我不太确定为什么会收到此错误。这是一个基于express.js的简单API,能够添加和删除帖子。当我触发删除路由器时发生错误。我读到错误通常在有两个回调的情况下发生,但是,我似乎找不到任何双重回调。 这是我的posts.js路由器: 问题答案: 您需要添加“返回”,这样您就不会再次回答。

  • 问题内容: 我需要测试一个函数,该函数需要使用urllib.urlopen(它也使用urllib.urlencode)来查询外部服务器上的页面。服务器可能已关闭,页面可能已更改;我不能依靠它进行测试。 控制urllib.urlopen返回的最佳方法是什么? 问题答案: 另一个简单的方法是让您的测试覆盖urllib的功能。例如,如果您的模块具有 您可以这样定义测试: 然后,当您的测试调用中的函数时,

  • 我在micronaut中有以下接口来执行HTTP POST请求: 我有一个调用接口的类: 我想在我的spock测试中模拟/存根API调用,我尝试了以下方法: 然而,我得到的错误:

  • 我已经设法更新了存根(): 但是,当我尝试存根store()时: 我收到错误: org.mockito.exceptions.misusing。ErrorTypeOfReturnValue:<br>fieldsRow()无法返回整数fieldsRow()应返回行 如果您不确定为什么会出现上述错误,请继续阅读。由于语法的性质,可能会出现上述问题,因为: 这种异常可能发生在错误编写的多线程测试中。请参

  • 问题内容: (编辑:VS代码;打字稿:2.2.1) 目的是获取请求响应的标头 假设服务中具有HttpClient的POST请求 第一个问题是我遇到Typescript错误: 确实,当我转到post()方法的ref时,我指出了这个原型(我使用VS代码) 但是我想要这个重载的方法: 因此,我尝试使用此结构修复此错误: 并编译!但是我只是得到json格式的主体请求。 此外,为什么我必须放一个?字段名称末