我知道Groovy DSL能够生成随机值。 我已经使用了存根运行程序服务器,以便可以从服务器中找到存根并获得响应。但是,当我刷新浏览器时,我再次得到相同的响应。 Groovy DSL只是生成一个静态存根,并且总是返回与我请求相同的响应。
在这种情况下,如何在不重新生成存根的情况下获得随机响应?
一年前,有人曾问过类似的问题,它的答案是不可能的。还是不可能,还是现在有办法做到?
答案 0 :(得分:0)
您将必须创建自己的WireMock扩展。检查文档的这一部分:https://cloud.spring.io/spring-cloud-static/Finchley.SR2/single/spring-cloud.html#_registering_your_own_wiremock_extension
95.5.6注册自己的WireMock扩展WireMock允许您注册自定义扩展。默认情况下,Spring Cloud Contract 注册转换器,以便您引用来自 响应。如果您想提供自己的扩展名,可以注册 的实现 org.springframework.cloud.contract.verifier.dsl.wiremock.WireMockExtensions 接口。由于我们使用spring.factories扩展方法,因此您 可以在META-INF / spring.factories文件中创建类似于 以下:
org.springframework.cloud.contract.verifier.dsl.wiremock.WireMockExtensions=\
org.springframework.cloud.contract.stubrunner.provider.wiremock.TestWireMockExtensions
org.springframework.cloud.contract.spec.ContractConverter=\
org.springframework.cloud.contract.stubrunner.TestCustomYamlContractConverter
以下是自定义扩展的示例:
TestWireMockExtensions.groovy.
package org.springframework.cloud.contract.verifier.dsl.wiremock
import com.github.tomakehurst.wiremock.extension.Extension
/** * Extension that registers the default transformer and the custom one */ class TestWireMockExtensions implements WireMockExtensions { @Override List<Extension> extensions() { return [
new DefaultResponseTransformer(),
new CustomExtension() ] } }
class CustomExtension implements Extension {
@Override String getName() { return "foo-transformer" } }
您必须创建一个扩展程序,以修改响应并生成响应。该扩展必须在消费者和生产者端均可用。