场景:第一个响应成功,但第二个相同的请求返回 404 错误代码

问题描述

我需要什么时候第一次请求然后得到存根响应代码 = 401。

第二个 SAME 请求何时执行,然后获取存根响应代码 = 200。

为此,我使用场景。

这是我在一个文件中的 wiremock 映射:

{
  "scenarioName": "Request transfer,401","requiredScenarioState": "Started","newScenarioState": "Triggered Once","request": {
    "method": "POST","urlPattern": "/api/T2A"
  },"response": {
    "headers": {
      "Content-Type": "application/json"
    },"status": 401
  }
}

{
  "scenarioName": "Request transfer,200","requiredScenarioState": "Triggered Once","newScenarioState": "Started","status": 200,"bodyFileName": "VB/back/request_transfer.json"
  }
}

什么时候第一次请求我得到存根响应 = 401。

不错。但是当第二个相同的请求 wiremock 返回错误代码 = 404 时。

                                               Request was not matched
                                               =======================

-----------------------------------------------------------------------------------------------------------------------
| Closest stub                                             | Request                                                  |
-----------------------------------------------------------------------------------------------------------------------
                                                           |
POST                                                       | POST
/api/T2A                                                   | /api/T2A
                                                           |
                                                           |
-----------------------------------------------------------------------------------------------------------------------

2021-03-02 22:44:34.802 Request received:
127.0.0.1 - POST /api/T2A

{"MTS":"2be192ca-dabe-47b9-b","IDNP":"1"}


Matched response deFinition:
(no response deFinition configured)

Response:
HTTP/1.1 404
(no headers)


2021-03-02 22:44:34.805 Received request to /not-matched with body 

为什么第二个 SAME 请求不返回存根响应状态 = 200?

解决方法

您的场景必须具有相同的名称。这就是 WireMock 识别映射属于该场景的方式。

您收到 404 错误,因为场景 Request transfer,401 和场景状态 Triggered Once 中没有映射。

将两个映射的场景名称更改为 Request transfer 将解决您的问题。