0.0.5 • Published 8 years ago

lfp-unit-test v0.0.5

Weekly downloads
3
License
MIT
Repository
github
Last release
8 years ago

单元测试

背景

每次编写玩脚本后,想做一个简单的单元测试,但是每每想到,需要引入一堆莫名的玩意, 就隐隐觉得很脚痛,而且还不能用在浏览器,到底是什么鬼啊...

功能简介

看例子:

const { descript, it, run } = UnitTest();
const name = 'da宗熊';

// 定义一个测试用例
descript('名字校验', () => {
  // 用例中的一个测试单元
  it('名字必须以"da"开头', done => {
    if (name.indexOf('da') === 0) {
      // 通过测试,调用 done 方法
      done();
    } else {
      // 测试不通过,抛出异常
      throw new Error('error');
    }
  });
});

run();

上述例子,定义了一个测试用例"名字校验",此用例,拥有测试单元"名字必须以"da"开头", 如果用例中,所有测试单元都通过,则用例测试通过,否则,抛出异常,测试不通过。


常用 API 介绍

unitTest.descript(desc: String, testFn: Function)

定义一个测试用例,desc 是用例的描述,testFn 是用例执行的内容

var unitTest = new UnitTest();
var descript = unitTest.descript;

descript('测试用例1', function() {
  // do something...
});

unitTest.run();

注意,descript 中,不能再包含 descript

unitTest.it(desc: String, unitFn: Function)

定义一个测试单元,仅运行在 descript 中

var unitTest = new UnitTest();
var descript = unitTest.descript;
var it = unitTest.it;

descript('测试用例1', function() {
  it('test something', function(done) {
    // 验证通过,执行 done();
    // 验证不通过,抛出异常
    // 一定时间内,没执行 done 或 抛异常,则会触发超时,默认超时时间为 5s
  });
});

unitTest.run();

unitTest.timeout(time: Number)

重置当前测试单元it的执行的超时时间,同一个 descript 中,仅最后一个 timeout 生效

const unitTest = new UnitTest();
const { descript, it, run, timeout } = unitTest;

// timeout(10000); // 将 unitTest 实例的默认超时,更改为 10s

descript('测试用例1', function() {
  timeout(6000);

  it('test something', function(done) {
    // 6s 后,才超时
  });
});

run();

unitTest.before(fn: Function) 和 unitTest.after(fn: Function)

分别用于指定在 descript 或 it 执行之前和之后,需要做的处理, 当在 descript 中执行,则用于指定每一个 it 前和后的处理。 否则,则用于指定每个 descript 前和后的处理。

const unitTest = new UnitTest();
const { descript, it, run, before, after } = unitTest;

// 在执行“测试用例1”前,先执行此处
before(function(next) {
  console.log('before');
  next(); // 必须调用 next,通知外部已执行完成
});

descript('测试用例1', function() {
  // 在执行 "test something" 后,执行此处
  after(function(next) {
    console.log('after');
    next();
  });

  it('test something', function(done) {
    done();
  });
});

run();