稀土 2018-03-09
本文主要目的在于横评业界主流的几款前端框架,顺带说下相关的一些内容。
通常应用会有 单元测试(Unit tests) 和 功能测试(Functional tests),复杂大型应用可能会有整合测试(Integration tests)。
其中:
追踪问题变得更加方便。
BDD:与 TDD 很相似,测试代码的风格是预期结果,更关注功能,看起来像需求文档。
其实都是先写测试代码,感觉BDD 风格更人性。
参考链接
仿真(mocks, spies, and stubs):获取方法的调用信息,模拟方法,模块,甚至服务器
相关资料
较多用于 React 项目(但广泛支持各种项目)
总结一下,Mocha 用的人最多,社区最成熟,灵活,可配置性强易拓展,Jest 开箱即用,里边啥都有提供全面的方案,Tape 最精简,提供最基础的东西最底层的API。
参考
选择测试框架并不是非黑即白的事儿,就像你并不能证明PHP不是最好的语言。
个人倾向 Jest,原因:容易上手,开箱即用,功能全面。
下面是在 stackshare 最流行的三个测试框架如下,但应考虑到 Jest 比较年轻,参与投票的时间较短的因素。
下面是三个框架在过去一年里 google 的搜索热度,但应该考虑到 Jest 比较年轻,大家尝试新东西,解决新问题,可能会带来较大搜索量。
下面是用户使用情况的调查,可以看出, Jest 忠诚度较高,使用后弃用的概率较低,Mocha 和 Jasmine 知名度最高。数据统计于 2017 年。
参考
要测试的代码
'use strict' var Math = { add(a, b) { return a + b; } } module.exports = Math;
const test = require('ava'); const math = require('../Math'); const firstOperand = ; const secondOperand = ; test("Math add function", t => { const result = math.add(firstOperand, secondOperand); t.is(result, firstOperand + secondOperand); });
var math = require('../Math'); describe("Math", function() { var firstOperand; var secondOperand; beforeEach(function() { firstOperand = ; secondOperand = ; }); it("should add two numbers", function() { var result = math.add(firstOperand, secondOperand); expect(result).toEqual(firstOperand + secondOperand); }); });
jest.unmock('../Math'); // unmock to use the actual implementation of Math var math = require('../Math'); describe("Math", function() { var firstOperand; var secondOperand; beforeEach(function() { firstOperand = ; secondOperand = ; }); it("should add two numbers", function() { var result = math.add(firstOperand, secondOperand); expect(result).toEqual(firstOperand + secondOperand); }); });
var assert = require('assert'); // nodejs 内建断言 var math = require('../Math'); describe("Math", function() { var firstOperand; var secondOperand; beforeEach(function() { firstOperand = ; secondOperand = ; }); it("should add two numbers", function() { var result = math.add(firstOperand, secondOperand); assert.equal(result, firstOperand + secondOperand); }); });
var test = require('tape'); var math = require('../Math'); var firstOperand = ; var secondOperand = ; test("Math add function", function(t) { var result = math.add(firstOperand, secondOperand); t.equal(result, firstOperand + secondOperand); t.end(); });
参考资料1
参考资料2
参考资料3