zoukankan      html  css  js  c++  java
  • 本地伪装 mock

    在开发自测,联调过程中,经常碰到一些下游服务调用不通的场景,这个时候我们如何不依赖于下游系统,就业务系统独立完成自测?

    dubbo自身是支持mock服务的,在reference标签里,有一个参数mock,该参数有四个值,false,default,true,或者Mock类的类名。分别代表如下含义:

    • false,不调用mock服务。
    • true,当服务调用失败时,使用mock服务。
    • default,当服务调用失败时,使用mock服务。
    • force,强制使用Mock服务(不管服务能否调用成功)。(使用xml配置不生效,使用ReferenceConfigAPI可以生效)

    例子:

    实现类:

    @Service
    public class TblEmpServiceImpl extends ServiceImpl<TblEmpMapper, TblEmp> implements TblEmpService {
    
    }

    Mock类(名称必须是 接口名+Mock 的形式):

    public class TblEmpServiceMock implements TblEmpService{
        /**
         * 当消费者先去调用下游服务,发现没服务,然后调用Mock服务,返回相应数据。
         */
        public boolean deleteById(Serializable id) {
            System.out.println("恭恭敬敬");
            return false;
        }
    }

    消费者xml:

    如果mock为true,则默认调用名称为 接口名+Mock 的类

    <dubbo:reference interface="com.ssmp.service.TblEmpService" id="tblEmpService" mock="com.ssmp.controller.TblEmpServiceMock" check="false"/>

    消费者:

    public class Consumer {
        public static void main(String[] args) throws Exception {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"META-INF/spring/user-consumer.xml"});
            context.start();
            TblEmpService t = (TblEmpService) context.getBean("tblEmpService");
            Boolean b = t.deleteById(1);
            System.out.println(b);
            System.in.read();
        }
    }

    输出:

    恭恭敬敬

    false

    如果服务的消费方经常需要 try-catch 捕获异常,如:

    Offer offer = null;
    try {
        offer = offerService.findOffer(offerId);
    } catch (RpcException e) {
       logger.error(e);
    }

    请考虑改为 Mock 实现,并在 Mock 实现中 return null。如果只是想简单的忽略异常,在 2.0.11 以上版本可用:

    <dubbo:reference interface="com.foo.BarService" mock="return null" />
  • 相关阅读:
    游戏的真实度
    91)Prometheus简单入门
    90)ubuntu 内核升级/降级系统内核(4.13.0)
    89)yaml文件语法
    使用格式工厂,把视频转为gif,画质受损,出现彩虹条模糊的情况
    fastadmin管理后台--带个人日程管理功能
    http响应--禁用缓存设置
    HTTP响应-302,304码的运用
    http请求详解 防盗链技术
    php支付宝支付接口开发(教程笔记)
  • 原文地址:https://www.cnblogs.com/yifanSJ/p/9188620.html
Copyright © 2011-2022 走看看