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
当我尝试使用 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