用Karma和Jasmine测试Angular应用
TEST:
- Before you’ve written any of the code, you know how you want it to behave. You have a specification for its behavior.
 
为什么需要测试
- 当我们给程序添加了新功能后,可以run test来判断,新代码是否破坏了原有的程序。
 - a well-writen test能帮助,其他开发者,更容易理清程序是如何工作的。
 
TDD: test-driven development
BDD:behavior-driven development
karma配置:
Karma 可以用来启动一个应用服务器,并在其中运行测试代码和需要被测试的源码,并把测试结果打印到命令行。
#1测试框架 jasmine:
suite 与 specs
一个Suite(describe)包含多个Specs(it),一个Specs(it)包含多个断言(expect)。
- npm install --save-dev karma-jasmine
 - jasmine 需要 required.js, karma init 时,是否需要required.js时,应该选 true。
 - Each spec should test only one case or scenario at a time.
 
Jasmine 细则
describe('unit test main controller:',function(){
                describe('inner method',function(){})
            } )
    it('',function(){
    expect().toBe(true);
    })
匹配器
- toBe 使用js的 === 来比较
 - toEqual
 - toMatch
 - toBeDefined
 - toBeUndefined
 - toBeNull
 - toBeTruthy
 - toBeFalsy
 - toBeContain 验证一个item是否是数组中的一项
 - toBeLessThan
 - toBeGreaterThan
 - toBeCloseTo ???
 - toThrow
 
高级匹配器
spy
- toHaveBeenCalled:可以检查function是否被调用过,
 - toHaveBeenCalledWith: 可以检查传入参数是否被作为参数调用过。
 
beforeEach() 和 afterEach()
- 带有一个函数作为参数,这个函数在没个细则(it)运行前/后 执行。
 
#2 Requirejs A JAVAScript module loader
- requirejs
- karma-requirejs
其他必须的依赖:
- karma-chrome-launcher
- karma-cli  ????
Tips
这里karma环境一直配不好的一个重要原因是,对requirejs不熟悉
karma.config.js files应该注意的问题:
- 顺序
- 模式的顺序决定了文件在浏览器里被加载的顺序
 - 如果多个文件匹配到同一个模式,按字母顺序加载
 - 每个文件只被加载一次,如果多个模式匹配到同一个文件,由第一个匹配到的模式加载
 
 
angular.mock 模块
- module() 函数允许我们指定测试中用到的特定模块
 - inject() 函数只负责一件事,就是将服务注入测试。
 
测试服务
测试控制器: 需要创建新的scope 和 控制器实例,并将它们连接起来。
mock对象和异步代码测试
- $timeout.flush();
 
坑
10 10 2016 17:05:15.077:INFO [karma]: Delaying execution, these browsers are not ready: Chrome 53.0.2785 (Windows 10 0.0.0)
Chrome is executing
- 出现上述两个error : 是因为没有karma init时 没有生成requirejs的 入口文件 test.main.js
 
Angular的依赖注入机制,是可测试的保障。当一个应用有很多的依赖关系时,怎么做单元测试呢?
- 其实很简单,一个app能运行,它的依赖关系都是处理好的,我们在karma的files配置中,引入压缩好的js文件就ok了,不用再测试一个控制器时,再一个一个处理它的依赖关系。
 
对应版本的Angular 要下载对应版本的angular-mocks.js ,不然会出现错误。
用Karma和Jasmine测试Angular应用的更多相关文章
- Karma和Jasmine自动化单元测试——本质上还是在要开一个浏览器来做测试
		
1. Karma的介绍 Karma是Testacular的新名字,在2012年google开源了Testacular,2013年Testacular改名为Karma.Karma是一个让人感到非常神秘的 ...
 - Karma:1. 集成 Karma 和 Jasmine 进行单元测试
		
关于 Karma 会是一个系列,讨论在各种环境下,使用 Karma 进行单元测试. 本文讨论 karma 集成 Jasmine 进行单元测试. 初始化 NPM 实现初始化 NPM 包管理,创建 pac ...
 - Karma和Jasmine自动化单元测试
		
从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...
 - Karma和Jasmine  自动化单元测试环境搭建
		
最近初学AngularJS ,看到的一些教程中经常有人推荐使用Karma+Jasmine来进行单元测试.自己之前也对Jasmine有些了解,jasmine也是一个不错的测试框架. 1. karma介绍 ...
 - karma和jasmine的测试(包括angular测试)
		
本篇博客主要就是针对现在日新月异的技术和快速开发,测试被很多人忽略,其实在开发中如何保证代码的质量以及逻辑的完整性,测试显得十分重要,本文就是负责karma+jasmine来测试. 1.搭建测试的环境 ...
 - 基于Karma和Jasmine的AngularJS测试
		
1:工程目录结构 y@y:karma-t01$ tree -L 3.├── client│ ├── app│ │ └── user│ ├── bower_components│ │ ...
 - 基于karma和jasmine的Angularjs 单元测试
		
Angularjs 基于karma和jasmine的单元测试 目录: 1. 单元测试的配置 2. 实例文件目录解释 3. 测试controller 3.1 测试controller中变量值是否 ...
 - Angularjs 基于karma和jasmine的单元测试
		
目录: 1. 单元测试的配置 2. 实例文件目录解释 3. 测试controller 3.1 测试controller中变量值是否正确 3.2 模拟http请求返回值,测试$http服 ...
 - karma、jasmine做angularjs单元测试
		
引用文:karma.jasmine做angularjs单元测试 karma和jasmine介绍 <1>技术介绍 karma karma是Testacular的新名字 karma是用来自动化 ...
 
随机推荐
- 开发win8 metro monogame,显示pubcenter广告时会使游戏卡住的问题的解决方法。
			
开发win8 metro游戏,使用monogame,并且还加上pubcenter广告,但是在x64的机子上遇到了问题,广告一出,游戏卡死.经过一系列的判断,发现monogame一直在update和dr ...
 - .NET:再论异常处理,一个真实的故事
			
.NET:再论异常处理,一个真实的故事 背景 关于是使用枚举或布尔类型来表示方法执行状态,还是使用异常,可以参考这里的文章:http://www.google.ee/search?q=site%3Aw ...
 - 原生javascript-图片按钮切换
			
原生javascript-图片按钮切换 即上次被分配写原生JS相册弹窗后,这次又接到了写原生JS,图片按钮切换,真激情: 个人在线实例:http://www.lgyweb.com/picSwitch/ ...
 - python tornado nginx deployment tornado 的部署在linux Nginx服务器
			
题外话: 这里分享一个链接是将Flask 和 Apache 用 mod_wsgi 来进行传唤的部署方式,在digital ocean VPS 上的. https://www.digitalocean. ...
 - jsp传值乱码解决办法
			
在jsp中,我们经常从数据库读取数据返回客户端,但我们常常在制作时出现乱码现象,所以我们可以用<%request.setCharacterEncoding("UTF-8"); ...
 - 使用 IDEA 创建 Maven Web 项目 (四)- 让 WEB 应用跑起来
			
在 IDEA 中配置 Tomcat 单击 IDEA 工具栏上的 Edit Configurations... (在一个下拉框中),弹出 Run/Debug Configurations 对话框. 单击 ...
 - Python的下载和安装
			
一.下载(官方下载地址) 地址:https://www.python.org/downloads/ 我的是window7系统 二.安装详细过程 在选择安装组件的一步时,勾上所有的组件: 特别要注意选上 ...
 - springmvc+mybatis+spring 整合 SSM
			
A 调用摄像头拍照,自定义裁剪编辑头像 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单; 技 ...
 - Maven之pom.xml 配置详解
			
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
 - .Net 生成条形码
			
1,下面一个类,可以直接复制下去使用: public class Code39 { private Hashtable m_Code39 = new Hashtable(); ...