http://www.php.cn/js-tutorial-359219.html
mocha文档https://www.cnblogs.com/Leo_wl/p/5734889.html
mocha全局安装的方法 (两端都要安装)
npm install -g mocha
一、服务器端
简单示例
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(5));
assert.equal(-1, [1,2,3].indexOf(0));
})
})
});
二、浏览器端
mocha init test //初始化目录
通过script标签,引入测试代码和模块 index.html
<!DOCTYPE html>
<html>
<head>
<title>Mocha</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="mocha.css" />
</head>
<body>
<div id="mocha"></div>
<script src="mocha.js"></script>
<script>mocha.setup('bdd');</script>
<script src="https://cdn.staticfile.org/chai/4.0.0-canary.1/chai.js"></script>
<!-- 断言模块should -->
<script src="./add.js"></script>
<script src="tests.js"></script>
<script>
mocha.run();
</script>
</body>
</html>
需要测试的代码 add.js
function add (a,b){
return a + b;
}
测试代码 tests.js
var should = chai.should();
describe ("add测试",function(){
it ("add的",function(){
var sum = add (2,1);
should.equal(sum ,4)
})
})
总结
1、describe是可以嵌套的
describe (moduleName, testDetails) 由上述代码可看出,describe是可以嵌套的,比如上述代码嵌套的两个describe就可以理解成测试人员希望测试Array模块下的#indexOf() 子模块。module_name 是可以随便取的,关键是要让人读明白就好。
2、关于it函数
it (info, function) 具体的测试语句会放在it的回调函数里,一般来说info字符串会写期望的正确输出的简要一句话文字说明。当该it block内的test failed的时候控制台就会把详细信息打印出来。一般是从最外层的describe的module_name开始输出(可以理解成沿着路径或者递归链或者回调链),最后输出info,表示该期望的info内容没有被满足。一个it对应一个实际的test case
assert.equal (exp1, exp2) 断言判断exp1结果是否等于exp2, 这里采取的等于判断是== 而并非 === 。即 assert.equal(1, ‘1') 认为是True。这只是nodejs里的assert.js的一种断言形式,下文会提到同样比较常用的should.js。
如果exp1和exp2均为字符串,字符串比较出错时则控制台会用颜色把相异的部分标出来。
https://www.jianshu.com/p/38a37d5fccb2?utm_source=oschina-app
karma 、mocha 、chai 的关系。
一、karma 是驱动测试的runner,可以运行js代码在浏览器中测试。
二、mocha是基于node的js测试框架。
三、chai是断言库。
一句话,mocha测试框架,支持chai断言库。可以运行在karma运行时环境中