Closed vergilyn closed 2 years ago
dubbo: 2.7.13 spring-boot: 2.2.11.RELEASE dubbo-spring-boot: 2.7.13
@SpringBootTest(classes = DubboConsumerApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @TestPropertySource(properties = { "dubbo.consumer.scope = local" , "dubbo.consumer.check = false" }) public class DubboMockitoTests { @SpyBean private ConsumerMockitoService consumerMockitoService; @MockBean private ProviderService providerService; @SneakyThrows @Test public void mock(){ // 能达到mock的效果,只是代码不够友好 // final Field field = ReflectionUtils.findField(consumerMockitoService.getClass(), "providerService"); // field.setAccessible(true); // field.set(consumerMockitoService, providerService); Mockito.when(this.providerService.sayHello(ArgumentMatchers.any())).thenReturn("mock-say-hello"); final String result = consumerMockitoService.sayHello("vergilyn"); System.out.println("consumer sayHello >>>> resp: " + result); } @Service public static class ConsumerMockitoService { @DubboReference(version = "1.0.0", check = false) private ProviderService providerService; public String sayHello(String name){ return providerService.sayHello(name); } } }
以上代码无法正常mock ConsumerMockitoService中的 providerService。 虽然可以通过 反射 修改,达到mock-bean的目的,但是代码不够友好。
ConsumerMockitoService
providerService
org.apache.dubbo.rpc.RpcException: Service [com.vergilyn.examples.dubbo.service.ProviderService:1.0.0] not found. .....
(spring-cloud-openFeign 也出现过,是由于spring-boot高版本带来的问题) Spring-Boot, Behavior changed of MockBean in spring-boot-2.2.7
Spring-Cloud, Add FactoryBean.OBJECT_TYPE_ATTRIBUTE to registered beans:最终是由spring-cloud解决,版本在Hoxton.BUILD-20200515.034536-2455以上(发布版本貌似是 Hoxton.SR5+)
Hoxton.BUILD-20200515.034536-2455
@MockBean on feign client is not working:由于上面一个问题造成
dubbo: 2.7.13 spring-boot: 2.2.11.RELEASE dubbo-spring-boot: 2.7.13
问题描述
以上代码无法正常mock
ConsumerMockitoService
中的providerService
。 虽然可以通过 反射 修改,达到mock-bean的目的,但是代码不够友好。相关问题
(spring-cloud-openFeign 也出现过,是由于spring-boot高版本带来的问题) Spring-Boot, Behavior changed of MockBean in spring-boot-2.2.7
Spring-Cloud, Add FactoryBean.OBJECT_TYPE_ATTRIBUTE to registered beans:最终是由spring-cloud解决,版本在
Hoxton.BUILD-20200515.034536-2455
以上(发布版本貌似是 Hoxton.SR5+)@MockBean on feign client is not working:由于上面一个问题造成