前言段子:
本文由应对扯淡的开发团队而出,为毛这么说?呃...你们见过把大部分业务逻辑写在前端JS里的么?哥们不但遇到了,而且深受其害...原本可以抓包走javascript:;" onClick="javascript:tagshow(event, '%BD%D3%BF%DA%B2%E2%CA%D4');" target="_self">接口测试的那套东东全废了,不得不进行JS的单元测试 然鹅,首先需要读懂开发那边shit一样的JS代码。
先来个科普梗:
问:"JavaScript和Java什么关系?"
文艺点儿的答法是:"雷锋和雷峰塔的关系"
最直白的答法是:"卡巴斯基和巴基斯坦的关系"(不懂的话,请自行去某度)。
好啦~闲言碎语不多讲,今天咱们来表一表Mocha(发音"摩卡")摩大郎 开撸!!!
一、Mocha介绍:
mocha是一款功能丰富的javascript单元测试框架,它既可以运行在nodejs环境中,也可以运行在浏览器环境中。
javascript是一门单线程语言,最显著的特点就是有很多异步执行。同步代码的测试比较简单,直接判断函数的返回值是否符合预期就行了,而异步的函数,就需要测试框架支持回调、promise或其他的方式来判断测试结果的正确性了。mocha可以良好的支持javascript异步的单元测试。
mocha会串行地执行我们编写的测试用例,可以在将未捕获异常指向对应用例的同时,保证输出灵活准确的测试结果报告。
Chai是一个针对Node.js和浏览器的行为驱动测试和测试驱动测试的断言库,可与任何 JavaScript测试框架集成。
Istanbul是一个 JavaScript 的代码覆盖率检查库。其有如下特性:
· 可检查包括语句、分支和函数覆盖,以及反向工程的代码行覆盖
· 模块加载钩子可随时跟踪代码
· 命令行工具可运行带覆盖率检查的 node 单元测试,不需要对测试运行进行协作
· 可生成 HTML和LCOV报表
· 可作为中间件使用,在浏览器进行测试
· 可在命令行中以库的形式使用
二、实施细则:
1、JavaScript知识
PS:不入虎穴焉得虎子,先自己搞定JS基础知识再谈其他的)
1.1、JavaScript的变量
JS中变量的命名规则:
1)由字母、数字、下划线组成,区分大小写
2)必须以字母开头
3)变量名不能有空格,且大小写敏感
4)不能使用JavaScript中的关键字做变量名
变量声明:
在JavaScript中,用Var命令做声明变量,当然变量也可以不作声明,而在使用时再根据数据的类型来确其变量的类型;
length=16;//Number
varstring_name="Johnson";//String
vardatalist=["Audi","Fox","Lecsax"];//Array
varperson={firstName:"John",lastName:"Doe"};//Object
... ...
查看全文内容,请点击下载:http://www.51testing.com/html/15/n-3715215.html
二、实施细则:
1、JavaScript知识
PS:不入虎穴焉得虎子,先自己搞定JS基础知识再谈其他的)
1.1、JavaScript的变量
JS中变量的命名规则:
1)由字母、数字、下划线组成,区分大小写
2)必须以字母开头
3)变量名不能有空格,且大小写敏感
4)不能使用JavaScript中的关键字做变量名
变量声明:
在JavaScript中,用Var命令做声明变量,当然变量也可以不作声明,而在使用时再根据数据的类型来确其变量的类型;
length=16;//Number
varstring_name="Johnson";//String
vardatalist=["Audi","Fox","Lecsax"];//Array
varperson={firstName:"John",lastName:"Doe"};//Object
JS的变量类型分为值类型和引用类型:
· 值类型变量的特点是:
1)占用空间固定,保存在栈中。
2)保存与赋值的是值本身。
3)使用typeof检测数据的类型。
4)基本类型数据是值类型。
· 引用类型的变量特点是:
1)占用空间不固定,保存在堆中。
2)保存和赋值的是指向对象的一个指针。
3)使用instanceof检测数据的类型。
4)使用new()方法构造出的对象是引用型。
变量的作用域和生命周期:
全局变量(分为函数外定义的变量和在函数内定义的无var声明的变量)可以在任何位置调用。
局部变量(分为在函数内使用var声明的变量和函数的参数变量)只能在当前函数体内调用。
JavaScript变量生命周期在它声明时初始化。
局部变量在函数执行完毕后销毁。
全局变量在页面关闭后销毁,即:除非被显式销毁,否则一直存在。
1.2、JavaScript数据类型
· Undefined:
使用var声明变量但是未进行初始化,对未初始化的变量及未声明的变量使用typeof运算符均会返回undefined;undefined的变量和null用"=="进行比较时会返回true,因为undefined派生自null。声明空对象时我们可以将其初始化为null。
· Null:
null表示一个空对象的指针,使用typeof检查null时会返回object。
· Boolean:
true为真,false为假。我们使用boolen()对各种数据类型的变量进行强制转换时的规则如下:
非空字符串,非零数值,非空对象进行boolen()转换时返回true。
空字符串,0及NaN,null及undefined进行boolen()转换时返回false。
... ...
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。