如何在wiremock中使用“优先级”

Mat*_*att 1 java wiremock

我想了解优先级是如何工作的。更具体地说,将优先级设置为存根的预期输出是什么。这方面的文档有限,可用的文档并没有真正解释输出的样子,所以我无法验证我是否正确实现了它。

这是我当前的代码:

    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");
Run Code Online (Sandbox Code Playgroud)

我正在从 SOAPUI 发送以下请求:

/user/test?and=query 
Run Code Online (Sandbox Code Playgroud)

因此,两个存根都应该被执行,我应该收到两个正确的响应?

我目前只收到一个响应,它来自优先级为 1 的存根。我没有从优先级为 2 的存根收到任何响应/

有人可以帮我吗?

mon*_*ore 5

你究竟想达到什么目的?您通常有 Wiremock 配置,它们具有不同的请求参数或重叠。在您的情况下,它们完全相同。在哪种情况下应该显示第一种,哪种情况下应该显示第二种?

Wiremock 将始终只返回一个答案。这个答案通常是通过评估您在 Wiremock 配置中定义的请求参数来确定的。请参阅有关 Wiremock 和优先级如何工作的描述:Wiremock 存根和优先级

如果存在重叠参数,Wiremock 将选择您最近添加的配置(在您的情况下是第二个)。或者您可以通过设置优先级来指导 Wiremock。优先使用较低的优先级。

通常,您有一个更一般的情况(请求参数较少 - 作为追赶)和一个更具体的情况。第一个将获得更高的优先级(例如 9),而后者将获得更低的优先级(等式 5)。因此,如果请求参数匹配,则优先选择后者,而在其他情况下则选择第二个。