【问题标题】:PACT: How to match specific dateTime format in pact jvm DSL?PACT:如何在 pact jvm DSL 中匹配特定的 dateTime 格式?
【发布时间】:2020-11-11 18:45:14
【问题描述】:

使用 pact jvm DSL 和 spring boot (.timestamp(name, format, example) 我可以同时指定:

.timestamp("start", "dd-MM-yyyyy'T'HH:mm:ss'Z'", Instant.parse("2020-10-06T20:48:58.402Z"))

.timestamp("start", "yyyy-MM-dd'T'HH:mm:ss'Z'", Instant.parse("2020-10-06T20:48:58.402Z"))

甚至

.timestamp("start", "dd-MM-yyyyyyy'T'HH:mm:ss'Z'", Instant.parse("2020-10-06T20:48:58.402Z"))

测试仍然通过。

如果您发送日期 dd-MM-yyyy 而不是 yyyy-MM-dd,我真正的提供商服务错误,但我不知道您是怎么做到的当它错误地向提供者 API 发送错误格式的 JSON 时间戳时,应该让消费者端的测试失败。

即看起来像这样的位:

    @Test
    @PactTestFor(pactMethod = "postTheThing")
    public void pactWithProvider() {
      client.makeApiCall(testPayload);
    }

【问题讨论】:

  • 我认为测试用例会通过,因为 pact 框架不会验证数据,而只是将响应中的 json 元素与预期的 pact 文件进行比较。例如,字段 start 更改为 startDate,但 pact 文件中的预期字段是 'start',那么您的测试用例将失败。

标签: java pact


【解决方案1】:

仅当您添加一些验证时,消费者测试才会失败。假设契约在消费者端转换为存根,仅此而已。

只需在您的消费者测试中添加一些mockition #verify 验证即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多