4.消费端mock

2020-09-06  本文已影响0人  山海树

当消费端用于测试自己逻辑的时候,可以通过mock的方法来实现不需要服务端的测试。
1.实现方式也就是在消费端新建一个与实现类,该实现类实现需要调用的接口,并且
实现类=接口完全地址+Mock(如果不一致,则找不到这个mock,会报错)
2.在消费端配置不检查服务端是否存在,check= false
3.设置消费端进入mock模式, mock = true
4.直接调用即可

注意,此处存在一个 逻辑,当调用的时候,还是回去找服务端,尝试连接不上的时候才会去调用mock实现类。

 ReferenceConfig<GreetingService> referenceConfig = new ReferenceConfig<>();
        referenceConfig.setApplication(new ApplicationConfig("mock-consumer"));
        referenceConfig.setRegistry(new RegistryConfig("zookeeper://127.0.0.1:2181"));
        referenceConfig.setTimeout(5000);
        referenceConfig.setInterface(GreetingService.class);
        referenceConfig.setVersion("1.0.0");
        referenceConfig.setGroup("dubbo");

        referenceConfig.setCheck(false);
        referenceConfig.setMock(true);

        GreetingService greetingService = referenceConfig.get();

        RpcContext.getContext().setAttachment("company","alibaba");

        System.out.println(greetingService.sayHello("world"));

原理


image.png

消费端调用get()后再init()方法中会checkMock(),checkMock()回对mock配置做校验和转换
mock的真正实现则是再MockClusterInvoker中实现


image.png
上一篇下一篇

猜你喜欢

热点阅读