【发布时间】:2017-12-31 00:12:49
【问题描述】:
我一直在使用wiremock 进行集成测试,并创建了自定义请求匹配器并将其用于授权存根。
有什么方法可以在 Spring Cloud 合约合约定义中使用这个匹配器?
具体来说-我想为特定用户创建存根,我获得用户的唯一方法是解码授权令牌。如果解码的令牌与用户匹配 - 我想匹配请求并使用提供的存根。
【问题讨论】:
标签: wiremock spring-cloud-contract
我一直在使用wiremock 进行集成测试,并创建了自定义请求匹配器并将其用于授权存根。
有什么方法可以在 Spring Cloud 合约合约定义中使用这个匹配器?
具体来说-我想为特定用户创建存根,我获得用户的唯一方法是解码授权令牌。如果解码的令牌与用户匹配 - 我想匹配请求并使用提供的存根。
【问题讨论】:
标签: wiremock spring-cloud-contract
目前,我们不支持开箱即用地应用自定义匹配器的简单方法。您需要做的是实现org.springframework.cloud.contract.verifier.converter.StubGenerator(例如,通过扩展org.springframework.cloud.contract.verifier.wiremock.DslToWireMockClientConverter 以将Groovy DSL 合同正确转换为包含转换器的JSON 表示的WireMock StubMapping(如此处提供的http://wiremock.org/docs/extending-wiremock/) 。您必须在META-INF/spring.factories 中注册该实现(例如org.springframework.cloud.contract.verifier.converter.StubGenerator=\
a.b.c.YourStubGenerator)。我认为这可行。
总结一下。本质上会发生的是,您需要将 Contract 映射到 String 存根映射,遍历这些条目,将字符串转换回 WireMock StubMapping,添加所需的自定义匹配器并返回响应。您必须在 spring.factories 中注册您的实现并将其放在插件的类路径中 - 这样会在生成存根时选择它。
【讨论】: