乐趣区

前端单元测试入门1


1. 单元测试

1.1 TDD 测试驱动开发

  • TDD 指的是 Test Drive Development,很明显的意思是测试驱动开发,也就是说我们可以从测试的角度来检验整个项目。
  • 大概的流程是先针对每个功能点抽象出接口代码,然后编写单元测试代码,接下来实现接口,运行单元测试代码,循环此过程,直到整个单元测试都通过。

1.2 BDD 行为驱动开发

  • BDD 指的是 Behavior Drive Development,也就是行为驱动开发。
  • 在 TDD 中,我们并不能完全保证根据设计所编写的测试就是用户所期望的功能。
  • BDD 将这一部分简单和自然化,用自然语言来描述,让开发、测试、BA 以及客户都能在这个基础上达成一致。

2. 测试工具

  • 单元测试框架 mocha http://mochajs.org
  • 断言 chai http:/chaijs.com
  • 代理 HTTP 请求 supertest https://npmjs.com/package/supertest

2.1 使用 mocha 完成一个简单的测试用例

2.1.1 安装

Chai 允许开发人员选择最舒适的接口进行测试语句的编写。具有链式功能的 BDD 风格提供了富有表现力的语言和可读风格,如 expect 或者should; 而 TDD 断言风格则提供了更为经典的感觉,如assert

npm i mocha chai -S -D

2.1.2 页面结构

2.1.3 add.js

function add(x, y) {return x + y;}

module.exports = add;

2.1.4 在测试文件 mocha.js 中先引入 add 方法和 chai 的 expect 方法

var add=require('../src/add.js');
var expect=require('chai').expect;

2.1.5 然后书写测试脚本

describe('add_test1',function(){it('1+1=2',function(){expect(add(1,1)).to.be.equal(2);
   });
   it('1+1!=3',function(){expect(add(1,1)).to.be.not.equal(3);
   })
})

上面这段代码,就是测试脚本,它可以独立执行。测试脚本里面应该包括一个或多个 describe 块,每个 describe 块应该包括一个或多个 it 块。

describe 块 称为“ 测试套件 ”,表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称(“add_test1”),第二个参数是一个实际执行的函数。

it 块 称为“ 测试用例 ”,表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称(“1+1=2”),第二个参数是一个实际执行的函数

2.1.6 在 package.json 的 scripts 中添加 mocha

scripts: {"test": "mocha"}

2.1.7 运行 test 文件

npm run mocha

运行了上述代码后,会自动运行 /test/*.test.js 文件,得到如下结果

退出移动版