mock测试

Motan提供两种mock方式,一种是通过Filter机制进行mock,另一种是在protocol协议层进行mock,两种方式都可以分别在server端和client端生效。

使用ServiceMockFilter进行mock

ServiceMockFilter使用方式为

1、配置filter="mock" , 加载ServiceMockFilter

2、设置mock="*",其中的值类型

1)、false:不使用mock

2)、return某个类型值: 包括returnempty、returnnull、returntrue、returnfalse、return,其中代表string类型的值。

3)、mock类全名:mock类必须为声明的interface的实现类,并且有默认构造函数。

3、client进行mock时,只对请求进行mock,服务发现必须能找到至少一个server,可以通过directUrl配置一个不存在的服务,例如,check=false,directUrl="127.0.0.1:8002“

具体实现可以参考ServiceMockFilter类

使用mock协议

方式如下:

1、实现自定义mock协议类,继承AbstractMockRpcProtocol,实现processRequest方法(自定义mock逻辑)。

2、添加spi声明 @SpiMeta(name = "your_mock_protocol") ,在META-INF/services/com.weibo.api.motan.rpc.Protocol文件中添加mock协议类的类全名。spi扩展方式见编写Motan扩展

3、配置motan:protocol 为SpiMeta中声明的名字,即name=your_mock_protocol,如果在client端mock,就在basicReferer或Referer中设置对应protocl;如果在server端mock,则在export中配置${mock协议的id}:port

具体实现可以参考AbstractMockRpcProtocol类

运维及监控