【问题标题】:Spring Cloud Contract and Spring-WS EndpointsSpring Cloud Contract 和 Spring-WS Endpoints
【发布时间】:2017-04-12 23:48:51
【问题描述】:

可以使用 Spring Cloud Contract 来测试运行 Spring-WS Endpoints 的 Spring Boot 服务吗?我希望能够使用 Groovy DSL 定义 SOAP 请求/响应,但我无法让这些服务与 Spring Cloud Contract 一起使用。当我尝试运行这些测试时,我一直失败(预期为 200,但收到 404)。有趣的是,我在我的 Endpoint 类中添加了 @RestController 和 @RequestMapping 注释(知道它不起作用)只是为了测试这些服务是 Spring-WS 端点而不是 Spring REST 控制器这一事实是否可能是问题(即, Spring Cloud Contract 是否只“看到” REST 端点?)。而且...我转向了一组不同的错误。所以,我现在假设我不能使用 Spring Cloud Contract 来测试我的 SOAP 服务,但我想确定(即,是否有一些我还没有发现的方法来做到这一点?)。

我们的核心服务是作为 REST 服务实现的,但我们仍然必须支持我们的 SOAP 客户端,直到它们可以迁移到 REST,因此它们封装了我们的 REST 服务。我需要同时测试两者的能力。我已经成功地为我们的 REST 服务创建了测试。

【问题讨论】:

    标签: spring-cloud-contract


    【解决方案1】:

    尝试使用显式模式,让您放心发送真实请求。在基类中,您必须设置整个应用程序,以便将其绑定到真实端口。然后在测试的前面部分中,您需要告诉放心,我应该调用以下端口。就是这样:P

    【讨论】:

    • Spring-WS 服务是否仍然能够将存根用于 Spring Cloud Contract 生成的其他服务?或者,我是否必须启动并运行完整的堆栈(例如,OAuth 服务、服务依赖项 A、服务依赖项 B 等)?
    • 这一切都取决于你。在基类中,您可以启动一个普通的 Spring Context。我的建议是(在生产者方面)存根控制器外部的任何后续调用。您不想在合同测试中进行端到端测试。换句话说,如果你的控制器调用了一个服务,你应该在你的合约测试中删除那个服务。在消费者方面,您可以调用任意数量的存根。当然,这些是我对 Spring-WS 的假设,因为我从未使用 Spring Cloud Contract 尝试过。
    • 我不想手动为依赖创建存根,因为这违背了使用 Spring Cloud Contract 的全部目的,其中依赖存根只有在生成它们的测试通过时才会生成。您是说这就是我必须做的,为服务依赖项手动创建这些存根吗?如果没有,我如何使用 Spring Cloud Contract 生成的存根 jar 来模拟这种设置中的服务依赖关系?
    • 不,这不是我要说的。当我说您可以在 stub runner 中调用尽可能多的存根 == 时,您可以传递任意数量的工件 ID。
    猜你喜欢
    • 2017-09-29
    • 2017-02-15
    • 2018-12-27
    • 2020-10-24
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    相关资源
    最近更新 更多