美文网首页
为什么使用接口?/调用与实现分离/测试场景:Mock

为什么使用接口?/调用与实现分离/测试场景:Mock

作者: 月下蓑衣江湖夜雨 | 来源:发表于2019-07-22 23:55 被阅读0次

为什么要使用接口

为什么要使用接口?好处是可以将调用与实现分离。比如:配置查询接口的实现与调试依赖于平台SDK,需要拉环境,下配置。这些只需在建模的时候实现并测试即可。开发业务流程,写alpha测试流程的时候,并不需要去读写真正的配置(比较麻烦),或者alpha需要特定的配置。

CofigManager与ConfigRole

ConfigManager作为数据的管理者,ConfigRole作为数据的使用者

ConfigManager按模型划分,每个模型一个itf,查询接口的实现也按模型分 ConfigRole接口是ConfigManager的子集(只有查询?),configInfo持有ConfigManager,据此可以查询

CofigManager与ConfigRole的创建

CofigManager在ds收到started消息,进行init()的时候创建。在ds拉起do的时候,传给do。
ConfigRole的创建过程,就是将CofigManager传递给configInfo(Struct)。

如何Mock?

在跑alpha用例的时候,首先会拉起一个假的ds或者do。
这个ds或do也会收到来自alpha框架的started消息,也会进行init操作。
这时候,创建一个configMock给ds或do的ConfigManager(使用和实现分离)。

为何我的Mock无效?

我在CofigRole中加了个查询接口,比如函数4,它在configInfo中的实现依赖函数3。
函数3是ConfigManager的函数。
函数3在ConfigMock中被Mock。
我在ConfigMock中也Mock了函数4,但是无效。
原因是函数4-->(依赖)函数3-->Mock,所以函数4查询的是函数3的Mock值,不会是函数4的Mock值。
想要Mock函数4,可以在ConfigManager中声明函数4,在模型查询的实现中实现函数4(这时候再依赖函数3就没关系了),然后再在configInfo中直接根据ConfigManager提供的函数4查询。这时候再在ConfigMock中去Mock函数4。

如何在不同的alpha中,将函数4的返回值Mock成不同的结果?

以变量的形式记录返回值,提供一个改变该值的函数或其他方式。

相关文章

网友评论

      本文标题:为什么使用接口?/调用与实现分离/测试场景:Mock

      本文链接:https://www.haomeiwen.com/subject/wsoglctx.html