如何解决MockServer 使用多个 body 匹配器进行验证
我正在使用 MockServer body matchers 来验证端点请求的正文参数。某些属性可以匹配 exactly,但其他属性可能需要单独的 subString 或 regex 匹配器,因为该属性的一部分是未知的。例如,日期时间字符串可能具有已知日期,但未知时间。
但是,对于多个 withBody()
调用,如果一个或多个匹配器通过,则 verify
方法通过。如何实现逻辑 AND 而不是 OR?
mockServer.verify(
request()
.withPath(url)
.withMethod("POST")
.withBody(
json(
"{\"firstName\": \"foo\",\"lastName\": \"bar\"}",MatchType.ONLY_MATCHING_FIELDS))
.withBody(
// Need subString because we don't kNow the time and only want to validate the date
subString("\"order_date_time\": \"2021-04-15")));
解决方法
要对多个正文匹配器条件执行逻辑与运算,您需要多次调用 verify()
方法:
private void verifyOrderPlaced() {
verifyName();
verifyOrderDate();
}
private void verifyName() {
mockServer.verify(
request()
.withPath(url)
.withMethod("POST")
.withBody(
json(
"{\"firstName\": \"foo\",\"lastName\": \"bar\"}",MatchType.ONLY_MATCHING_FIELDS)));
}
private void verifyOrderDate() {
mockServer.verify(
request()
.withPath(url)
.withMethod("POST")
.withBody(
subString("\"order_date_time\": \"2021-04-15")));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。