【吐槽】最近写一些异步的服务发现测试用例也忒难写了

chaz6chez

问题描述

最近在给rabbitmMQ客户端插件写测试用例的时候发现也太难去处理测试用例了,利用workerman event-loop的rabbitmq基础客户端Bunny在网络请求的时候使用的event-loop的add及timer,如果我需要mock或者捕获我的参数及结果的时候实在比较复杂,如果workerman的event-loop拥有基础事件,我能够注入一些回调函数来进行数据拦截的话可能会好一些;
不知道workerman啥时候有空完善分享一下测试,也可能需要我有时间的时候先为workerman补充测试用例了;

测试用例有挺多的好处,比如:

  1. 在调整修改基础接口的时候可以清晰地知道我的本次修改是否可以向前兼容、是否满足我的预期,这样可以不用畏手畏脚地进行新特性的新增和旧功能的移除;
  2. 在对workerman进行外围开发的时候,开发者可以知道本次的修改是否影响workerman基础功能,在开发上会比较放心;
  3. 使用者对测试覆盖较全的应用会更有使用信心,测试用例本身也是使用手册,对于有代码阅读习惯的开发者能够更快地进行理解核心本身;

如果我来进行测试用例的补充和围绕测试做调整,这里有几个疑问:

  1. workerman现目前的基础依赖有哪些?比如 PHP >=7.4
  2. 我应该对workerman github库中的哪个分支进行开发调整?
  3. 是否需要讨论,毕竟测试用例的撰写包含可能会对核心代码的调整,比如
    1. 增加用于测试推演的拦截事件、增加内部的public接口,例如:撰写_getEventLoop()等内部接口方法,但该方法仅用于测试,而不作为开放接口堆外使用;
    2. 是否有代码的开发规范及习惯,比如约定 下划线开头的即便是public方法也应为内部方法等

不知道亮哥是否有计划做 workerman 规范迭代的计划,比如制订一些约定,以便于workerman开源社区的开发者更好的参与开源开发?

当然以上仅为一些吐槽和建议,因为在我看来,非死抠条款的约定有利于开源的发展及代码维护,不论 workerman官方在某一天是否还会继续维护,整个PHP开源社区都可以依照相应的约定继续 “接盘”,包括延申的周边产品都可以“续命”,我个人认为这是一件百利无一害的规划内容。

587 1 1
1个回答

walkor

给workerman增加测试用例是一直想做的事情。欢迎 @chaz6chez 对workerman做测试用例补充和调整。

1、workerman本身要求php>=7.0,其它本身没有强制的外部依赖
2、master是5.0分支,建议直接先给5.0增加测试用例
3、对于核心代码调整。workerman的有些代码规范可能不符合大部分开发者的习惯,例如 私有属性以_为前缀,变量名是小写加_形式,类似这些都可以更改成符合大部分人习惯的规范。关于为了测试用例增加接口的问题,是否可以考虑在测试用例中写一个继承类,继承类里实现这些接口,这样就不影响内核接口了。

对外提供的接口为了向下兼容不能有大幅度变动,其它内部实现不合理的、不符合普遍规范的都可以做修改。关于规范问题,@chaz6chez 愿意的话可以出一个通用的规范,大家一同遵守。如果需要我这做协助的随时提。

  • chaz6chez 2022-12-12

    ok,那我先按照这个来尝试实现一些测试用例,我会尽可能不修改接口而采用新增的方式来满足测试需求,如果遇到比较棘手的问题时,我会先提issue描述沟通;另外我的英文比较chinglish,我可能大部分使用中文的git commit message

  • walkor 2022-12-12

    没问题

年代过于久远,无法发表回答
🔝