我想了解优先事项的运作方式。更具体地说,将存根优先级设置为存根的预期输出是多少。关于这方面的文档是有限的,可用的文档并没有真正解释输出的样子,所以我无法验证我是否正确实现了它。
这是我目前的代码:
stubFor(post(urlMatching("/user/test\\?(and)\\=(que).*")).atPriority(1)
.willReturn(aResponse()
.withStatus(200)
.withHeader("Content-Type", "text/plain")
.withBody("This stub is testing for Title ")
)
);
System.out.println("About to execute the second stub");
stubFor(post(urlMatching("/user/test\\?(and)\\=(que).*")).atPriority(2)
.willReturn(aResponse()
.withStatus(200)
.withHeader("Content-Type", "text/plain")
.withBody("This stub is testing Author ID ")
)
);
System.out.println("Second stub executed");
我从SOAPUI发送以下请求:
/user/test?and=query
因此,两个存根应该执行,我应该收到两个正确的响应?
我目前只收到一个响应,它来自优先级为1的存根。我没有从优先级为2的存根中获得任何响应
有人可以帮我这个吗?
你到底想要达到什么目的?您通常具有Wiremock配置,这些配置具有不同的请求参数或重叠。在你的情况下,他们是完全一样的。在哪种情况下应该是第一种,哪种情况应该显示第二种情况?
Wiremock总是只返回一个答案。此答案通常通过评估您在Wiremock配置中定义的请求参数来确定。请参阅有关Wiremock和优先级如何工作的描述:Wiremock Stubbing and priorities
如果参数重叠,Wiremock将选择您最近添加的配置(在您的情况下是第二个)。或者您可以通过设置优先级来指导Wiremock。将优先使用较低的优先级。
通常情况下,您有一个更一般的情况(请求参数更少 - 作为追赶)和更具体的情况。第一个将获得更高的prio(例如9)而后者将获得更低的prio(e.q.5)。因此,如果请求参数匹配,则优先选择后者,而在其他情况下,第二个匹配。