【发布时间】: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',那么您的测试用例将失败。