博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Js测试框架学习笔记(一)
阅读量:6500 次
发布时间:2019-06-24

本文共 1923 字,大约阅读时间需要 6 分钟。

什么时候使用Karma?

在真实浏览器里测试。在多种浏览器里进行测试(包括桌面、移动)。在本地开发环境执行测试。想在持续集成CI内运行测试。想在每次保存代码时,自动执行测试。热衷于terminal小黑屏。不想陷入令人厌烦的测试生活。想使用Istanbul自动生成coverage报告。想在源码中使用RequireJS。

Karma:

Karma一直作为一个Test Runner而存在的,只是用来测试的框架。不过到目前为止,它支持以下流行的测试框架。

MochaJasmineQUnit

Karma对各种Test Framework的支持是以插件的模式进行支持的

创建一个test文件夹,用于存放自己写的单元测试代码。

Mocha:

Mocha 既是测试框架,也是一个测试 runner ,它主要用在 Node.js里的单元测试,当然也可以用在浏览器端,不过得手动配置各种适配脚本。

所谓”测试框架”,就是运行测试的工具。通过它,可以为JavaScript应用添加测试,从而保证代码的质量。
测试脚本里面应该包括一个或多个describe块,每个describe块应该包括一个或多个it块。

describe块称为”测试套件”(test suite),表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称(”加法函数的测试”),第二个参数是一个实际执行的函数。

it块称为”测试用例”(test case),表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称(”1 加 1 应该等于”2”),第二个参数是一个实际执行的函数。
一个describe是一个it的集合。describe包含n个it,一个it包含n个判断断言

var expect = require('chai').expect;//上面代码引入的断言库是chai,并且指定使用它的expect断言风格。

expect断言的优点是很接近自然语言

基本上,expect断言的写法都是一样的。头部是expect方法,尾部是断言方法,比如equal、a/an、ok、match等。两者之间使用to或to.be连接。
如果expect断言不成立,就会抛出一个错误。事实上,只要不抛出错误,测试用例就算通过。

如果测试脚本是用ES6写的,那么运行测试之前,需要先用Babel转码。

Mocha默认每个测试用例最多执行2000毫秒,如果到时没有得到结果,就报错。对于涉及异步操作的测试用例,这个时间往往是不够的,需要用-t或–timeout参数指定超时门槛。
另外,Mocha内置对Promise的支持,允许直接返回Promise,等到它的状态改变,再执行断言,而不用显式调用done方法。
Mocha在describe块之中,提供测试用例的四个钩子:before()、after()、beforeEach()和afterEach()。它们会在指定时间执行。

describe('hooks', function() {
before(function() {
// 在本区块的所有测试用例之前执行 }); after(function() {
// 在本区块的所有测试用例之后执行 });∏ beforeEach(function() {
// 在本区块的每个测试用例之前执行 }); afterEach(function() {
// 在本区块的每个测试用例之后执行 }); // test cases});

chai

chai是一套TDD(测试驱动开发)/BDD(行为驱动开发)的断言框架

所谓”断言”,就是判断源码的实际执行结果与预期结果是否一致,如果不一致就抛出一个错误。
所有的测试用例(it块)都应该含有一句或多句的断言。它是编写测试用例的关键。断言功能由断言库来实现,Mocha本身不带断言库,所以必须先引入断言库

包含有3个断言库支持BDD风格的expect/should和TDD风格的assert,

,expect/should库都支持链式调用,有如下的链式API,多部分都是英文的介词和be动词,可以用来做谓语

tobebeenisthatandhashavewithatofsamenot 跟在链式调用后面的否定断言

Sinon

mock更侧重与是测试代码是否作出了行为,最终mock.verify()的调用会验证所有的期望是否符合.

转载于:https://www.cnblogs.com/xihe/p/6138600.html

你可能感兴趣的文章
文件操作示例脚本 tcl
查看>>
大家好,新年快乐。
查看>>
prototype
查看>>
【SQL Server】系统学习之一:表表达式
查看>>
Docker容器入门-基本命令的使用
查看>>
2015湖南省省赛 阶乘除法 暴力
查看>>
SuSE下VNCVIEWER没有出现界面,只有shell窗口的问题
查看>>
软件工程实践2017 个人技术博客
查看>>
poj(2325)线段树
查看>>
Android学习路线
查看>>
Linux下的redis的持久化,主从同步及哨兵
查看>>
在相同的主机上创建一个duplicate数据库
查看>>
Date15
查看>>
从Date类型转为中文字符串
查看>>
bzoj1251: 序列终结者 (splay)
查看>>
rr与hr_RR、AR、OR和HR
查看>>
感情沟通出了问题要怎么解决_当感情出现问题怎么沟通 相处更融洽
查看>>
flutter 卡顿_记一次flutter列表卡顿的优化
查看>>
hive 强转为string_hive数据类型转换、字符串函数、条件判断
查看>>
arcgis出界址点成果表_界址点成果表
查看>>