[发明专利]一种编写可测试前端代码的方法在审
申请号: | 202010745700.9 | 申请日: | 2020-07-29 |
公开(公告)号: | CN112069055A | 公开(公告)日: | 2020-12-11 |
发明(设计)人: | 张颖;邓淮谦 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京权智天下知识产权代理事务所(普通合伙) 11638 | 代理人: | 王新爱 |
地址: | 215124 江苏省苏州*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 编写 测试 前端 代码 方法 | ||
本发明公开了一种编写可测试前端代码的方法,基于TypeScript语言;在前端代码中的源类和要导入的依赖项中增加一个抽象层;所述抽象层通过TS的接口或者抽象类来实现前端代码中的依赖反转;依赖反转以后,在源类中导入所述抽象层,通过所述抽象层向前端代码传入遵守抽象协议的内容实现对前端代码进行了解耦。本发明方法可以大大降低组件之间的耦合性,使前端代码易于扩展和维护,便于其他开发人员阅读理解,使前端代码更易于通过测试脚本进行自动化测试,有利于JS异常错误的显示与跟踪。
技术领域
本发明涉及涉及网页开发技术领域,尤其涉及一种编写可测试前端代码的方法。
背景技术
长期以来,前端测试并没有得到开发者的重视,不是必要编写的内容。但是随着前端工程化的发展,前端测试已经成为持续集成中的重要组成部分,一个标准完整的项目,单元测试是非常有必要的。对于JavaScript这种缺少类型检查的动态语言来说,单元测试可以验证代码的正确性,让开发者在上线前做到心里有底。而大多数不了解SOLID原则或软件组成的开发人员,会编写本不应耦合的紧密耦合的模块和类,从而导致代码难以更改且难以测试,同时也会使代码后期的扩展和维护难度加大。
另外,现有的编写可测试代码的方法大多是针对后台代码的(如通过代理类、虚拟类进行代码的依赖解耦),或者是一种代码编写流程或软件设计的方法,如敏捷开发、测试驱动开发(TDD)、行为驱动开发(BDD)、测试循环开发(TWDD)等等,没有针对前端可测试代码编写的具体方案。
而针对后台编写可测试代码的方法不适用于前端代码,而针对代码编写流程或软件设计的方法,遵循这些方法有利于编写出可测试的前端代码,其结果直接取决于开发人员在系统里引入的意愿,不能确保一定就能产生可测试的代码,更别说是可测试的前端代码。
发明内容
本发明提供的一种技术方案是一种编写可测试前端代码的方法,能够针对前端代码中的依赖问题进行解耦,提高前端代码的可测试性,同时降低了代码后期扩展和维护的难度。
基于上述问题,本发明的技术方案是:基于TypeScript(TS,JavaScript的超集,最终会被编译成JavaScript代码),通过在前端代码中的源类和要导入的依赖项中增加一个抽象层,该抽象层可以通过TS的接口(interface)或者抽象类(abstractclass)来实现,从而实现前端代码中的依赖反转。依赖反转以后,源类导入抽象层,通过抽象层可以传入遵守抽象协议的任何内容,从而对前端代码进行了解耦,使其具有可测试性。
具体的:
第一,判断代码测试情况。
编写前端代码时,当某一个组件(类、模块等)中引入另一个组件(类、模块等),并且当前组件需要依赖于另一个组件才能进行编译,即源代码的依赖关系受到限制。此时,判断是否后期需要对当前组件源类进行测试。根据判断情况,如果后期不需要测试当前组件源类,则保持原有代码。如果后期需要对当前组件编写测试代码,则对当前的依赖项进行判断。
第二,判断组件的依赖项。
根据以下条件:第一,与当前组件源类来自同一层或内层(依赖规则);第二,当前依赖项是一个稳定的组件(如不经常更改的组件);第三,依赖项是一个接口或者抽象类。如果当前依赖项满足一个以上条件时,可以继续导入依赖项,保持原有代码。如果以上条件都不满足时,则不导入。
第三,源类和依赖项的依赖反转。
对不满足条件的当前组件源类和依赖项进行依赖反转。具体步骤如下:
i.通过TS的接口或抽象类在当前组件源类和依赖项之间增加一个抽象层,创建该抽象层的接口或抽象类;
ii.确保原依赖项实现该抽象层的接口或抽象类;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010745700.9/2.html,转载请声明来源钻瓜专利网。