Angular单元测试
https://angular.github.io/protractor/#/
http://jasmine.github.io/2.4/introduction.html
测试程序有两种主要方法:端对端测试和单元测试。
端对端测试
如果使用自上而下的方法进行测试,那么写测试时就将程序视为一个“黑盒”。与程序交互就如真实用户一样,从“旁观者”的角度评判程序是否达标。这种自上而下的测试技巧被称为端对端测试。
在Angular中,最常用的工具叫作Protractor。Protractor能够打开浏览器与程序交互,收集测试结果,并检验测试结果与预期值是否相符。
单元测试
第二种常用的测试方法是隔离程序的每个部件,在隔离环境中运行测试。这种测试形式叫作单元测试。
在单元测试中,所写的测试需要事先提供既定的输入值与相应的逻辑单元,检测输出结果,确定它是否与我们的预期结果匹配。
--------------------------------------------------------------------------------
下面说说单元测试。
为了测试程序,我们将用到两种工具:Jasmine和Karma。
【Jasmine】
Jasmine是一种用于测试JavaScript代码的行为驱动框架。
利用Jasmine,你可以设置代码在调用后的预期结果。
比如,我们假定Calculator对象有一个sum函数。想确保1加1的结果为2,就可以用一个测试(也叫规格,spec)来表达。使用以下代码:
describe('Calculator', () => {
it('sums 1 and 1 to 2', () => {
var calc = new Calculator();
expect(calc.sum(1, 1)).toEqual(2);
});
});
使用Jasmine的一个优点是代码易于阅读。从以上代码可以看到,我们期望 calc.sum的结果等于2。
测试通常由多个describe块和it块组成。
通常,我们用describe来组织要测试的逻辑单元,对于其内部每个要使用断言的预期都会用到一个it块。然而,这并不是一个硬性规定。你会经常看到一个it块包含多个预期。
在上述Calculator示例中,我们只是列举了一个简单的对象。正因为如此,整个类只使用了一个describe块,而每个方法使用一个it块。
大多数情况下并非如此。比如,某些方法会根据不同输入值产生不同结果,那么这些方法可以拥有多个相应的it块。在这种情况下,最好使用嵌套的describe块:对象级别用一个,每个方法也各用一个,然后在其内部的每个断言语句用一个单独的it块包裹。
更多有关Jasmine和其语法的资料, 参见Jasmine 官方文档: http://jasmine.github.io/2.4/introduction.html。
【Karma】
使用Jasmine,我们可以描述测试和预期结果。要运行测试,还需要为测试提供一个浏览器环境。
Karma应运而生。使用Karma,我们可以在Chrome或Firefox之类的真实浏览器或者PhantomJS这样的空壳浏览器(无用户界面)内运行JavaScript代码。
--------------------------------------------------------------------------------
【Angular 单元测试框架】
Angular自身提供了一套基于Jasmine框架的辅助类,用以帮助我们编写单元测试。
主要的测试框架位于 @angular/core/testing 包中。(然而,为了测试组件,我们会用到 @angular/compiler/testing 包和 @angular/platform-browser/testing 包中的一些辅助类。稍后具体介绍。)
注:如果这是你初次测试Angular程序,那么在为Angular写单元测试时,需要先完成一些必要的设置步骤。
例如,在需要注入依赖时,我们经常手动配置它们。在测试一个组件时,需要使用测试辅助类初始化它们。在测试路由时,还需要构建一些依赖。
设置有些繁琐,但不用太担心。一旦掌握,你就会发现从一个项目切换到另外一个项目,配置不会有多大变化。
Angular单元测试的更多相关文章
- angular单元测试与自动化UI测试实践
关于本文:介绍通过karma与jsmine框架对angular开发的应用程序进行单元与E2E测试. angular单元测试与集成测试实践 先决条件 创建项目 webstorm中创建空白web项目 创建 ...
- Angular单元测试系列
Angular单元测试系列 - 大纲Angular单元测试系列 - 简介Angular单元测试系列 - 如何使用Jasmine进行Angular单元测试Angular单元测试系列 - Router.C ...
- karma作为jQuery单元测试Runner
karma作为angular测试runner出现,如果你使用过karma一定感受到这很不错的javascript测试runner.简单干净的配置文件karma.config.js,以及karma in ...
- Angular学习笔记--last_update 20151106
参考来源:http://www.angularjs.cn/tag/AngularJS?p=1&s=50 基本要求:一周搞定33篇学习文章 目标:develop/refactor lms系统an ...
- ApacheCN Asp.NET 译文集 20211126 更新
ASP.NET Core2 基础知识 零.前言 一.搭建舞台 二.控制器 三.视图 四.模型 五.验证 六.路由 七.RestBuy 八.添加功能.测试和部署 ASP.NET Core3 和 Angu ...
- 使用Angular CLI进行单元测试和E2E测试
第一篇文章是: "使用angular cli生成angular5项目" : http://www.cnblogs.com/cgzl/p/8594571.html 第二篇文章是: & ...
- Angular企业级开发(5)-项目框架搭建
1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...
- Angular企业级开发(2)-搭建Angular开发环境
1.集成开发环境 个人或团队开发AngularJS项目时,有很多JavaScript编辑器可以选择.使用优秀的集成开发环境(Integrated Development Environment)能节省 ...
- 前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定
一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...
随机推荐
- R载入需要的程辑包:rJava Error
> library(xlsx) 载入需要的程辑包:rJava Error : loadNamespace()里算'rJava'时.onLoad失败了,详细内容: 调用: inDL(x, as.l ...
- Oracle之rman命令的使用(51CTO风哥rman课程)
看rman的连接串的帮助 连接数据库 rman target/ rman的版本要和目标数据库一致(一般大版本可以往下兼容小版本) 运行操作系统命令 run {host "pwd"; ...
- Django - 项目总结
总结: 基础,进阶,项目 Django - 练习(图书管理系统) 前后端分离得项目: vue + rest framework 项目: 图书增删改查页面 BBS + BLOG系统 CRM系统 在线 ...
- avaScript 的基础学习(一)
JavaScript概述 JavaScript由三部分组成: JavaScript的基础 JS的引入方式: JS的数据类型: 运算符: 流程控制: JavaScript的对象 BOM对象 DOM Ev ...
- android进入页面会定位到ListView问题解决方法
在我们的页面中如果存在有ListView,当我们进入这个activity时,页面会定位到ListView的位置去,而不是activity的头部,这是由于ListView会去默认获取焦点所造成的. 解决 ...
- JSON数组成员反序列化
场景: 构想客户端能够传递如下格式JSON字符串到服务端: {"KeyValueSetList":[{"SN":"RQ1001"," ...
- python 类 __call__
__call__ 对象后面加括号,触发执行. 即:对象() 或者 类()() class dog(object): def __init__(self,name): self.name = name ...
- 【spring mvc】扒一扒tomcat
1.TOMCAT的目录 主要说一下webapps目录,WEB应用的目录结构:假设在$CATALINA_HOME/webapps下有helloapp的web应用 /helloapp:Web应用的根目录, ...
- 数据挖掘-聚类分析(Python实现K-Means算法)
概念: 聚类分析(cluster analysis ):是一组将研究对象分为相对同质的群组(clusters)的统计分析技术.聚类分析也叫分类分析,或者数值分类.聚类的输入是一组未被标记的样本,聚类根 ...
- Linux 安装配置 Nginx
前言 准备用flask做一个自己的博客网站,打算用Nginx来部署,所以在阿里云的服务器上安装Nginx,参考了很多教程,现在将步骤以及自己遇到的坑写下来,希望能对别人有所帮助. 我用的服务器是阿里云 ...