浅谈Angular单元测试总结


Posted in Javascript onMarch 22, 2019

测试分类

按开发阶段划分

  • 单元测试

单元测试又称模块测试,针对软件设计中的最小单位——程序模块,进行正确性检查的测试工作。

  • 集成测试

集成测试又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增测试。重点测试不同模块的接口部分

  • 系统测试

指的是将整个软件系统看成一个整体进行测试,包括对功能、性能以及软件所运行的软硬件环境进行测试。

  • 验收测试

指按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统

按是否运行划分

  • 静态测试

是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程

  • 动态测试

是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
按是否查看源代码划分

  • 黑盒测试

指的是把被测的软件看做一个黑盒子,不关心盒子里面的结构是什么样子,只关心软件的输入数据和输出数据。

  • 白盒测试

指的是把盒子打开,去研究里面的源代码和程序结构。

其他

  • 回归测试

是指软件被修改后重新进行的测试,重复执行上一个版本测试时的用例,是为了保证对软件所做的修改没有引入新的错误而重复进行的测试。

  • 冒烟测试

是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。

  • 随机测试

是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。

一直以来都是后台写单元测试,这周初次使用前台单元测试,出错是必然的

问题使用自己写的组件或者管道是报错

浅谈Angular单元测试总结

需要在前台单元测试spec.ts文件中加入自己写的组件或管道,例如:

浅谈Angular单元测试总结

使用框架中自带的组件

浅谈Angular单元测试总结

需要在前台单元测试spec.ts文件中加入报错信息提示的组件,例如:

[object ErrorEvent] thrown [对象 错误事件] 被抛出

浅谈Angular单元测试总结

这个错误是遇到次数最多的,当时出现这个错误时和张喜硕组长研究查资料搞了大半宿也没解决,最后还是在潘老师的帮助下解决的,得知ng test 时控制台报错的哪个文件,不一定是这个文件出错,解决办法如下:

打开单元测试时自动弹出来浏览器的控制台

浅谈Angular单元测试总结

控制台中,由于http发起请求时,必然发生错误,所以有很多个错误,但是导致单元测试不通过的,只有那些发生了异常,我们没有传入error的

浅谈Angular单元测试总结

找到Uncaught,点开HttpErrorResponse看一下对应service中的那个服务

在对应的服务中找到,找到方法(在方法名上右键Find Usages )看谁调用了我。

浅谈Angular单元测试总结

在订阅的时候,要加入error异常错误

浅谈Angular单元测试总结

加上之后问题解决,单元测试通过。

总结

单元测试从长期来看,可以提高代码质量,减少维护成本,降低重构难度。但是从短期来看,加大了工作量,对于进度紧张的项目中的开发人员来说,可能会成为不少的负担。

但是我这里有个疑问:

angular单元测试都是用命令行自动生成的,测试和不测试有什么区别?感觉加了测试反而更麻烦

Javascript 相关文章推荐
javascript 动态table添加colspan\rowspan 参数的方法
Jul 25 Javascript
JS 参数传递的实际应用代码分析
Sep 13 Javascript
jQuery 删除/替换DOM元素的几种方式
May 20 Javascript
jQuery实现个性翻牌效果导航菜单的方法
Mar 09 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
Sep 04 Javascript
BootStrap注意事项小结(五)表单
Mar 10 Javascript
分享Bootstrap简单表格、表单、登录页面
Aug 04 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
Dec 13 Javascript
vue-cli —— 如何局部修改Element样式
Oct 22 Javascript
VUE+Element实现增删改查的示例源码
Nov 23 Vue.js
解决vue项目本地启动时无法携带cookie的问题
Feb 06 Vue.js
详解TypeScript的基础类型
Feb 18 Javascript
JavaScript面试技巧之数组的一些不low操作
Mar 22 #Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
Mar 22 #Javascript
微信小程序城市选择及搜索功能的方法
Mar 22 #Javascript
使用node搭建自动发图文微博机器人的方法
Mar 22 #Javascript
如何从零开始手写Koa2框架
Mar 22 #Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
Mar 22 #Javascript
详解ES6中的Map与Set集合
Mar 22 #Javascript
You might like
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
jquery text,radio,checkbox,select操作实现代码
2009/07/09 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
JavaScript Split()方法
2015/12/18 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
python 文件操作api(文件操作函数)
2016/08/28 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
用scikit-learn和pandas学习线性回归的方法
2019/06/21 Python
通过python3实现投票功能代码实例
2019/09/26 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
Python实现一个论文下载器的过程
2021/01/18 Python
用python制作个音乐下载器
2021/01/30 Python
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
外语系毕业生求职自荐信
2014/04/12 职场文书
项目经理岗位职责
2015/01/31 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
英语演讲开场白
2015/05/29 职场文书
西柏坡观后感
2015/06/08 职场文书