【问题标题】:MockServer verify with multiple body matchersMockServer 使用多个身体匹配器进行验证
【发布时间】:2021-07-11 02:10:57
【问题描述】:

我正在使用 MockServer body matchers 来验证端点请求的正文参数。某些属性可以匹配exactly,但其他属性可能需要单独的subStringregex 匹配器,因为该属性的一部分是未知的。例如,日期时间字符串可能有一个已知的日期,但未知的时间。

但是,对于多个 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")));

【问题讨论】:

    标签: java unit-testing matcher verify mockserver


    【解决方案1】:

    要对多个主体匹配器条件执行逻辑与,您需要多次调用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")));
    }
    

    【讨论】:

      猜你喜欢
      • 2019-08-27
      • 1970-01-01
      • 2023-02-22
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 2021-01-13
      相关资源
      最近更新 更多