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

tester · June 18, 2020 · Last by 陈恒捷 replied at June 19, 2020 · 1292 hits


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

共收到 9 条回复 时间 点赞

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

tester #2 · June 18, 2020 作者
陈恒捷 回复

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

tester 回复

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

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

tester #4 · June 18, 2020 作者
陈恒捷 回复

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

tester 回复

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

tester #6 · June 18, 2020 作者
saii 回复

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

tester 回复

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

tester #8 · June 19, 2020 作者
陈恒捷 回复

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

tester 回复

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

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

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up