Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用;“优先事项”;有线模拟_Java_Wiremock - Fatal编程技术网

Java 如何使用;“优先事项”;有线模拟

Java 如何使用;“优先事项”;有线模拟,java,wiremock,Java,Wiremock,我想了解优先级是如何工作的。更具体地说,设置存根优先级的预期输出是什么。关于这方面的文档有限,而且可用的文档并没有真正解释输出的样子,因此我无法验证是否正确实现了它 这是我当前的代码: stubFor(post(urlMatching("/user/test\\?(and)\\=(que).*")).atPriority(1) .willReturn(aResponse() .withStatus(200)

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

这是我当前的代码:

    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将选择您最近添加的配置(在您的案例中是第二个)。 也可以通过设置优先级来指导Wiremock。优先使用较低的优先级

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

您到底想要实现什么? 通常,Wiremock配置具有不同的请求参数或重叠。在你的情况下,它们是完全一样的。在哪种情况下应显示第一种情况,在哪种情况下应显示第二种情况

Wiremock始终只返回一个答案。此答案通常由您在Wiremock配置中定义的请求参数的评估来确定。 请参阅本说明,了解Wiremock和优先级的工作原理:

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

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

正如@monsnore所述,对于重叠参数,将选择最近添加的与这些参数匹配的映射

当我最初在wiremock中查看请求匹配时,我认为应该选择最精确的匹配

我所说的“最精确”是指在请求中匹配最多元素的元素。例如,给定这两个映射(按此顺序添加):

映射1 地图2 如果接收到url
/oauth2/rest/approve
和版本为
的OAM\u ID cookie的请求,则匹配大多数元素的映射为映射1

但是,选择了映射2,因为它匹配并且是最近添加的

在这种情况下,通过向映射添加优先级,可以确保带有cookie的请求与映射1匹配

优先顺序是必要的,因为最精确的匹配并不总是显而易见的。例如,如果存在第三个映射:

地图3 如果到达的请求包含来自映射1的cookie和来自映射3的授权头,则无法确定该请求的最精确匹配


它们各自匹配3个元素。这就是优先级所在。

正如@monsnore所述,对于重叠参数,将选择与这些参数匹配的最近添加的映射

当我最初在wiremock中查看请求匹配时,我认为应该选择最精确的匹配

我所说的“最精确”是指在请求中匹配最多元素的元素。例如,给定这两个映射(按此顺序添加):

映射1 地图2 如果接收到url
/oauth2/rest/approve
和版本为
的OAM\u ID cookie的请求,则匹配大多数元素的映射为映射1

但是,选择了映射2,因为它匹配并且是最近添加的

在这种情况下,通过向映射添加优先级,可以确保带有cookie的请求与映射1匹配

优先顺序是必要的,因为最精确的匹配并不总是显而易见的。例如,如果存在第三个映射:

地图3 如果到达的请求包含来自映射1的cookie和来自映射3的授权头,则无法确定该请求的最精确匹配

它们各自匹配3个元素。这就是优先级所在。

WireMock支持设置存根优先级。 默认情况下,WireMock将使用最近添加的匹配存根来满足请求

您可以使用
atPriority
在Java代码中添加优先级:

stubFor(get(urlMatching("/api/.*")).atPriority(5)
或在JSON中添加:

"priority": 1
更多信息请参见

WireMock支持设置存根优先级。 默认情况下,WireMock将使用最近添加的匹配存根来满足请求

您可以使用
atPriority
在Java代码中添加优先级:

stubFor(get(urlMatching("/api/.*")).atPriority(5)
或在JSON中添加:
stubFor(get(urlMatching("/api/.*")).atPriority(5)
"priority": 1