关于前端测试Mocha和chai.js
作者:进击的前端 发布时间:[ 2016/8/24 14:17:56 ] 推荐标签:软件测试 WEB测试
之前写过一个javascript的语法自测(数组),开头关注作者出的题目,然后我发现可以学一下她的代码,当作测试入门。
基础概念
TDD和BDD
TDD是测试驱动开发,BDD是行为驱动开发
断言
node自带的断言库是assert,然后chai.js还提供了别的断言库
测试框架
组织测试的框架,比较有名的是Mocha
一个是Mocha是一个富特征的Javascript全栈测试框架
Mocha is a feature-rich JavaScript test framework running on Node.js and in the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases.
简单实例
安装
可以全局安装
$ npm install --global mocha
也可以在项目工程中安装
$ npm install --save-dev mocha
测试代码
新建一个test文件夹,在test文件夹下面新建test.js,输入以下内容
var assert = require("assert");
describe('Array',function(){
describe('#indexOf()',function(){
it('should return -1 when the value is not present',function(){
assert.equal(-1,[1,2,3].indexOf(4));
})
})
})
其实assert是断言库,断言库一般用来做判断,这里用了assert.equal来判断程序的结果和期望值是否相等。
assert的方法很少,也挺直观的
assert.fail(actual, expected, message, operator)
assert.ok(value, [message])
assert.equal(actual, expected, [message])
assert.notEqual(actual, expected, [message])
assert.deepEqual(actual, expected, [message])
assert.notDeepEqual(actual, expected, [message])
assert.strictEqual(actual, expected, [message])
assert.notStrictEqual(actual, expected, [message])
assert.throws(block, [error], [message])
assert.doesNotThrow(block, [error], [message])
assert.ifError(value)
然后我们看到,代码待用describe(' ',function(){})这样的形式,而且describe可以描述多层结构,利用describe和it的是BDD,句式是描述它应该怎么样的感觉,利用suite和test的是TDD
运行测试
在命令行里面输入
mocha test.js
然后如下显示,运行时间可能每个人得到的都不一样
Array
#indexOf()
should return -1 when the value is not present
1 passing (9ms)
断言库的选择
should.js - BDD style shown throughout these docs
expect.js - expect() style assertions
chai - expect(), assert() and should-style assertions
better-assert - C-style self-documenting assert()
unexpected - “the extensible BDD assertion toolkit”
chai支持expect(),assert(),should风格的断言方式,所以chai也是一个比较不错的选择
关于expet
var expect = require('chai').expect;
describe('arrays', function() {
var a;
beforeEach(function() {
a = [ 1, 2, 3, 4 ];
});
it('you should be able to determine the location of an item in an array', function() {
expect(arraysAnswers.indexOf(a, 3)).to.eql(2);
expect(arraysAnswers.indexOf(a, 5)).to.eql(-1);});
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11