SpringCloud 存根服务发现
2023-12-11 17:15 更新
Stub Runner Spring Cloud
的最重要特征是它正在存根
DiscoveryClient
Ribbon
ServerList
这意味着无论您使用的是Zookeeper,Consul,Eureka还是其他任何东西,您都不需要在测试中使用它。我们正在启动依赖项的WireMock实例,并且在您每次使用Feign
,直接负载均衡RestTemplate
或DiscoveryClient
来调用那些存根服务器而不是调用真实服务时,都告诉您的应用程序发现工具。
例如,该测试将通过
def 'should make service discovery work'() { expect: 'WireMocks are running' "${stubFinder.findStubUrl('loanIssuance').toString()}/name".toURL().text == 'loanIssuance' "${stubFinder.findStubUrl('fraudDetectionServer').toString()}/name".toURL().text == 'fraudDetectionServer' and: 'Stubs can be reached via load service discovery' restTemplate.getForObject('http://loanIssuance/name', String) == 'loanIssuance' restTemplate.getForObject('http://someNameThatShouldMapFraudDetectionServer/name', String) == 'fraudDetectionServer' }
对于以下配置文件
stubrunner: idsToServiceIds: ivyNotation: someValueInsideYourCode fraudDetectionServer: someNameThatShouldMapFraudDetectionServer
在集成测试中,您通常既不想调用发现服务(例如Eureka)也不能调用Config Server。这就是为什么您要创建其他测试配置以禁用这些功能的原因。
由于spring-cloud-commons
达到此目的的某些限制,您已通过如下所示的静态块(Eureka的示例)禁用了这些属性
//Hack to work around https://github.com/spring-cloud/spring-cloud-commons/issues/156 static { System.setProperty("eureka.client.enabled", "false"); System.setProperty("spring.cloud.config.failFast", "false"); }
以上内容是否对您有帮助:
更多建议: