MockServer:解析时出现 IllegalArgumentException JSON

MockServer: IllegalArgumentException when parsing JSON

当我尝试使用 MockServer 模拟外部 HTTP API 时,mockserver returns java.lang.IllegalArgumentException

这是测试代码:

new MockServerClient("localhost", 1080)
    .when(request("/messages")
    .withMethod("POST")
    .withQueryStringParameters(
        param("subject", "integration-test-subject")
    )
).respond(response().withStatusCode(200));

这是例外情况:

java.lang.IllegalArgumentException: Exception while parsing 
[  
   {  
      "httpRequest":{  
         "method":"POST",
         "path":"/messages",
         "queryStringParameters":{  
            "subject":[  
               "integration-test-subject"
            ]
         }
      },
      "httpResponse":{  
         "statusCode":200
      },
      "times":{  
         "remainingTimes":0,
         "unlimited":true
      },
      "timeToLive":{  
         "unlimited":true
      }
   }
] for Expectation

这是杰克逊的例外:

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of FIELD_NAME token
at
[  
   Source:(String)"   {  
      "httpRequest":{  
         "method":"POST",
         "path":"/messages",
         "queryStringParameters":{  
            "subject":[  
               "integration-test-subject"
            ]
         }
      },
      "httpResponse":{  
         "statusCode":200
      },
      "times":{  
         "remainingTimes":0,
         "unlimited":true
      },
      "timeToLive":{  
         "unlimited":true
      }
   }

我正在尝试发送 application/x-www-form-urlencoded 正文请求

subject:integration-test-subject

.withQueryStringParameters(param("subject", "integration-test-subject")) 不存在于测试中时,一切正常。

如何解决这个问题?

这个问题的解决方法是添加到你的项目中:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.3</version>
    </dependency>

我的项目使用 Spring Boot 2 这个解决方案工作正常。

这是 GitHub 中的一个问题,有解释

https://github.com/jamesdbloom/mockserver/issues/451

你可以更新到 5.4.1