Using the Stub Runner Boot Application
Spring Cloud Contract Stub Runner Boot 是一个 Spring Boot 应用程序,它公开 REST 端点以触发消息传递标签并访问 WireMock 服务器。
Stub Runner Boot Security
Stub Runner Boot 应用程序在设计上并不安全 - 为其提供安全性需要向所有存根添加安全性,即使它们实际上并不需要。由于这是一种测试实用程序 - 因此服务器*并非打算*用于生产环境。
希望 only a trusted client 具有对 Stub Runner Boot 服务器的访问权限。您不应将此应用程序作为胖 JAR 或 Docker Image 在不受信任的位置运行。
Stub Runner Server
要使用 Stub Runner Server,请添加以下依赖项:
compile "org.springframework.cloud:spring-cloud-starter-stub-runner"
然后用 @EnableStubRunnerServer
注释一个类,构建一个 fat jar,它即可工作。
关于属性,请参阅 Stub Runner Spring 部分。
Stub Runner Server Fat Jar
您可以通过运行以下命令从 Maven 下载一个单独的 JAR(例如,对于版本 2.0.1.RELEASE):
$ wget -O stub-runner.jar 'https://search.maven.org/remotecontent?filepath=org/springframework/cloud/spring-cloud-contract-stub-runner-boot/2.0.1.RELEASE/spring-cloud-contract-stub-runner-boot-2.0.1.RELEASE.jar'
$ java -jar stub-runner.jar --stubrunner.ids=... --stubrunner.repositoryRoot=...
Spring Cloud CLI
从 1.4.0.RELEASE
版本的 Spring Cloud CLI 项目开始,您可以通过运行 spring cloud stubrunner
来启动 Stub Runner Boot。
要传递配置,您可以在当前工作目录、名为 config
的子目录或 ~/.spring-cloud
中创建一个 stubrunner.yml
文件。如果本地安装了存根,则该文件可以类似于以下示例:
stubrunner:
stubsMode: LOCAL
ids:
- com.example:beer-api-producer:+:9876
然后您可以在终端窗口中调用 spring cloud stubrunner
以启动 Stub Runner 服务器。该服务器在端口 8750
可用。
Endpoints
Example
以下示例显示了 Stub Runner Boot 的典型用法:
Unresolved directive in stub-runner-boot.adoc - include::{stubrunner_core_path}/src/test/groovy/org/springframework/cloud/contract/stubrunner/server/StubRunnerBootSpec.groovy[]
Stub Runner Boot with Service Discovery
使用 Stub Runner Boot 的一种方法是将其用作 “smoke test” 的存根馈送。这是什么意思?假设您不想部署 50 个微服务到测试环境中,以查看您的应用程序是否工作。您已经在构建过程中运行了一套测试,但您还想确保应用程序的打包工作正常。您可以将您的应用程序部署到某个环境、启动它并在其上运行一些测试,以查看它是否正常工作。我们可以将这些测试称为 "`smoke test`”,因为它们的目的是只检查少数测试场景。
这种方法的问题在于,如果您使用微服务,则很可能也会使用服务发现工具。Stub Runner Boot 允许您通过启动所需的存根并将它们注册到服务发现工具来解决此问题。
现在假设我们想要启动此应用程序,以便自动注册存根。我们可以使用 java -jar ${SYSTEM_PROPS} stub-runner-boot-eureka-example.jar
运行该应用程序来实现此目的,其中 ${SYSTEM_PROPS}
。
这样,您的已部署应用程序可以通过服务发现向已启动的 WireMock 服务器发送请求。很可能,第 1 至第 3 点可以在 application.yml
中设置为默认值,因为它们不太可能改变。这样,您可以在启动 Stub Runner Boot 时只提供要下载的存根的列表。