如何将Java代码中的ResponseTemplateTransformer(false)迁移至WireMock 3
WireMock 3 迁移:ResponseTemplateTransformer 构造变更的解决方法
在WireMock 2版本中,我用这段代码配置WireMock,目的是启用响应模板支持但不自动对所有响应做转换:
com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig() .dynamicPort() .extensions(new ResponseTemplateTransformer(false))
升级到WireMock 3之后,发现只接收布尔值的ResponseTemplateTransformer构造函数被移除了,找了一圈没看到官方迁移指南,这里分享我试出来的替代方案。
解决方法
WireMock 3改用构建器模式来配置ResponseTemplateTransformer,要实现和原来new ResponseTemplateTransformer(false)一样的效果(即仅在指定的stub中启用模板转换,不全局生效),可以这么写:
com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig() .dynamicPort() .extensions(ResponseTemplateTransformer.builder() .global(false) .build())
如果不想显式写global(false)也没问题,因为构建器默认就是非全局模式,直接build()也能达到同样的效果:
com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig() .dynamicPort() .extensions(ResponseTemplateTransformer.builder().build())
原来的false参数本质就是设置转换器为非全局,所以用构建器的global(false)完全对应原来的逻辑,这样配置后就和WireMock 2里的行为一致了。
内容的提问来源于stack exchange,提问作者msd.salehi
相关产品推荐
相关产品推荐

