微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Cloud Contracts应该具体还是灵活?

如何解决Spring Cloud Contracts应该具体还是灵活?

在我们的项目中使用了两种写作合同样式。 首先是将请求和响应都保存为json文件,并使用它们定义合同:

request {
    body(file("request.json"))
}
response {
    body(file("response.json"))
}

它会创建存根,除非您的请求完全像request.json那样填写,否则存根将不起作用,这使得难以为使用者编写带有存根的单元测试。但是,使用具体的值可能更适合测试集成。

第二种方法是尽可能使用正则表达式:

request {
    body([
        clientName: $(anynonblankString()),accountNumber: $(consumer(regex("[0-9]{20}")),producer("12345678901234567890")),amount: $(anyNumber())
    ])
}

以这种方式定义的存根会很灵活,但最终只能测试请求中字段的存在及其格式。

哪种方式写合同是正确的?

解决方法

这仅取决于您的喜好。如果使用第一个选项,则仍可以使用bodyMatchers部分,在其中可以使用xpath或jspath来定义主体的哪些部分应该是动态的。都是优先事项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。