我们有一个案例,消费者对其消费的当前枚举成员非常严格。因此,消费者期望只收到枚举成员,并且对于拥有新的枚举成员感到非常失落。
enum ProductTypes {
Car, //required by consumer
Plane, //required by consumer
Train //new enum member
} // passes the contract test
enum ProductTypes {
//car was removed by the provider
Plane
} // should fail the contract test
在合约测试中,当场景缺少所需的枚举成员时,我们希望让提供者失败,但在添加新的枚举成员时应该失败。
目前我没有看到任何 Matcher 能够做到这一点。
可以用“插件”解决这个问题吗? 有其他方法可以在合同测试中涵盖这一点吗?
我查看了正则表达式,但这不符合标准。
在合约测试中,当场景缺少所需的枚举成员时,我们希望让提供者失败,但在添加新的枚举成员时应该失败。
这就是合同测试的设计原理。只有当消费者对提供商执行过于严格的合同时,它才会失败(请参阅有关良好消费者主张主题的指南)。
enum ProductTypes {
//car was removed by the provider
Plane
} // should fail the contract test
为了强制执行此失败,您需要对每个场景进行单独的测试(即每个所需的枚举一个) - 显然您想确保这是一个有用的测试。如果提供商删除了枚举并且这不会破坏消费者,那么您不应该在合同中强制执行这一点。理想情况下,您希望能够添加/删除不会破坏消费者的枚举。