单元测试

项目中写一些接口时有时候希望进行单元测试,ThinkJS 从 2.1.4 版本开始创建项目时支持创建单元测试相关的目录。

创建单元测试项目

创建项目时带上 —test 参数后就会创建测试相关的目录,如:

  1. thinkjs new demo --es --test

创建完成后,项目下会有 test/ 目录,该目录有单元测试的示例代码,自己写的单元测试代码也也都放在该目录下。

:如果 ThinkJS 版本低于 2.1.4,需要先将全局的 ThinkJS 升级。

测试框架

默认使用的测试框架是 mocha,代码覆盖率框架为 istanbul

书写单元测试

可以用 describeit 的方式来书写测试代码,如:

  1. var assert = require('assert');
  2. describe('unit test', function(){
  3. it('test controller', function(){
  4. var data = getFromFn();
  5. assert.equal(data, 1); //测试 data 是否等于 1,不等于则会测试失败
  6. })
  7. })

有些接口是异步的,mocha 提供了一个参数来完成,如:

  1. var assert = require('assert');
  2. describe('unit test', function(){
  3. it('test controller', function(done){
  4. getFromFn().then(function(data){
  5. assert.equal(data, 1); //测试 data 是否等于 1,不等于则会测试失败
  6. done(); //这里必须执行下 done,告知接口已经拿到数据并校验
  7. })
  8. })
  9. })

更多的测试用户请参考生成的文件 test/index.js,也可以参考 ThinkJS 框架的测试用例 https://github.com/75team/thinkjs/tree/master/test

执行单元测试

单元测试写完后,执行 npm test 就可以进行单元测试。如果代码需要编译,可以在另一个标签页面里执行 npm start,这样代码改变后就会自动编译。

老项目支持

如果是之前创建的项目,那么通过下面的方式来支持单元测试:

原文: https://thinkjs.org/zh-cn/doc/2.1/unit_test.html