首页 > 解决方案 > Spring Cloud Contracts 使用提供者状态

问题描述

我正在使用 Spring Cloud Contracts 版本 2.1.1,并且我想使用提供者状态。我知道我可以使用这里这里描述的场景。例如,我可以使用 POST 方法合约向数据库添加一些状态,然后使用 GET /calculate 方法合约,它根据数据库中的数据(提供者状态)执行一些逻辑。

但是,如果服务包含 GET /calculate 方法(它依赖外部进程将数据直接加载到数据库中)怎么办?在没有 API 方法的情况下如何创建提供者状态?Spring Cloud Contracts有可能吗?

我的理解是,使用 Pact,您可以使用任何 Java 代码来初始化提供程序状态,并使用 和 使该状态成为合同的given一部分@State。使用 Spring Contracts,我似乎仅限于使用 API 请求(创建合同并在场景中使用它)。有人可以澄清一下我如何使用一些普通的 Java 代码将状态直接加载到 DB,并使其成为合同的一部分吗?

标签: javaspringspring-cloud-contract

解决方案


在春季云合同中,我们认为您不应该设置提供者状态——这意味着您不应该依赖您的数据库。您应该模拟服务。如果你真的必须这样做,那么在 before 方法的基类中,你可以根据需要设置数据库状态。


推荐阅读