前端

mocha断言测试

2017-08-07  本文已影响237人  dittoyy3991
1. npm install -g mocha
2. npm install -g chai
*Error: Cannot find module 'chai'*
3,4是安装在项目内的
3. npm install --save-dev chai
4. npm install --save-dev mochawesome
mocha --reporter mochawesome漂亮模板啦
>测试结果报告就在[mochaawesome-reports
](https://github.com/ruanyf/mocha-demos/blob/master/demo02/mochawesome-reports)子目录生成

[测试框架 Mocha 实例教程](http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html)
[mochademo](https://github.com/ruanyf/mocha-demos)

执行的时候还可以单独指定目录以及shell通配符
$ mocha spec/{my,awesome}.js
$ mocha test/unit/.js
$ mocha test/{,
/}.{js,jsx}
test目录下面任何子目录中、文件后缀名为js或jsx的测试脚本。注意,Node的通配符要放在单引号之中,否则星号()会先被Shell解释。
$ mocha 'test/
/.@(js|jsx)'#node通配符

mocha --watch
只要测试脚本有变化,就会自动运行Mocha

mocha --bail
只要有一个测试用例没有通过,就停止执行后面的测试用例。这对[持续集成](http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html)很有用

- - -这里类似下面的only/skip用例管理啦???

mocha --grep "1 加 1"  (-g)
用于搜索测试用例的名称(即it块的第一个参数),然后只执行匹配的测试用例

mocha --grep "1 加 1" --invert  (-i)
只运行不符合条件的测试脚本,必须与--grep参数配合使用

比较好玩的几点


  1. mocha.opts配置test目录下加上如下命令行参数
    --reporter tap
    --recursive
    --growl

等价于mocha --recursive --reporter tap --growl

如果测试用例不是存放在test子目录,可以在mocha.opts写入以下内容
运行server-tests目录及其子目录之中的测试脚本
server-tests
--recursive

  1. 执行demo5关于require的时候提示
    报错severagent

npm install superagent cheerio --save

  1. describe块之中,提供测试用例的四个钩子:before()、after()、beforeEach()和afterEach()。它们会在指定时间执行。

  2. mocha -t 10000 async.test.js
    get请求

var request = require('superagent');
var expect = require('chai').expect;

describe('async.test.js - 异步测试', function() {
  it('异步请求应该返回一个对象', function(done){
    request
      .get('https://api.github.com')
      .end(function(err, res){
        expect(res).to.be.an('object');
        done();
      });
  });
});

Mocha内置对Promise的支持,允许直接返回Promise,等到它的状态改变,再执行断言,而不用显式调用done方法
promise.test.js

var fetch = require('node-fetch');
var expect = require('chai').expect;

describe('promise.test.js - 异步测试', function() {
  it('异步请求应该返回一个对象', function() {
    return fetch('https://api.github.com')
      .then(function(res) {
        return res.json();
      }).then(function(json) {
        expect(json).to.be.an('object');
      });
  });
});
  1. describe块之中,提供测试用例的四个钩子:before()、after()、beforeEach()和afterEach()。它们会在指定时间执行.

技能点燃,类似unittest里的setUp/tearDown,类似pytest里的setUp/tearDown和setUpClass/tearDownClass
--demo6里的栗子

  1. *测试用例管理only+skip
    describe块和it块都允许调用only方法,表示只运行某个测试套件或测试用例只运行特定的几个
    skip是跳过不运行,好吧都是通用的命令哇

  2. *浏览器测试

<script>
  mocha.setup('bdd');
</script>
<script src="add.js"></script>
<script src="http://chaijs.com/chai.js"></script>
<script src="tests.js"></script>
<script>
  mocha.run();
</script>
  1. 生成规格文件demo09
上一篇 下一篇

猜你喜欢

热点阅读