测试覆盖率 istanbul 怎么实现动态插桩方式,并启用 istanbul-middleware 后台服务

tester · 2020年06月18日 · 最后由 陈恒捷 回复于 2020年06月19日 · 23 次阅读


插桩方式中的 im.hookLoader,和 im.createClientHandler 该如何使用,实现动态插桩?

共收到 9 条回复 时间 点赞

建议你跟着 https://testerhome.com/topics/8230#%E6%84%8F%E5%A4%96%E6%83%8A%E5%96%9C ,把这个 demo 跑起来。然后看看里面的源码具体是怎么写的。

陈恒捷 回复

想直接用 istanbul-middleware 做后台展示,然后实时插桩,但是找了很多地方都没有关于怎么插桩的

tester 回复

可以看看我第二篇文档里的对这个 demo 的源码关键点解析。

具体怎么用的,一般文档只会写到 api 入参出参设定的程度,要看真正的实例还是看 demo 比较完整。

陈恒捷 回复

browser 端能做到实时插桩吗,看 demo 好像是需要提前插桩才可以,只可以在 server 端吗。可以在游览器端做到实时插桩统计覆盖率上传给 middleware 吗

tester 回复

浏览器端实时插桩这种方案很难做的,现在基本上前端代码都是 es6 代码然后 babel 转 es5 然后浏览器拿到的时候已经是被编译后的代码了,这个时候插桩怎么映射回源码的,这个事情很难

saii 回复

游览器插件和代理感觉是可以实现,就是不知道 middleware 可以不可以。jscover 有个代理模式不知道行不行

tester 回复

想了解下你的需求是什么,为何必须要在浏览器端做动态插桩?

陈恒捷 回复

因为开发和运维并不希望配置和环境被修改,哪怕是字节码插桩都不可以,只能绕路在本地实现插桩

tester 回复

为了测试需要调整配置和环境,开发和运维都不接受,个人感觉你现在的大环境还不是太适合推覆盖率。

不管是动态还是静态的插桩,插桩后的代码和线上运行的或者其它环境的毕竟会有些区别,整体研发团队不能接受这种差异的话,基本上覆盖率不大能推起来。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册