1、框架选型
- jasmine - BDD风格测试框架, - 开箱即用 - 自带断言及mock功能 - 比较老,坑基本都被踩过 - 不易扩展 |
- Jest - 基于 jasmine, - 开箱即用配置少,API简单 - 支持断言和仿真 - 支持快照测试 - 对 react 友好 - 较新,社区不十分成熟 |
- mocha - tj出品, - 可运行在node端和浏览器端 - 需要自己搭配断言库和仿真等 - 可使用快照测试,但依然需要额外配置 - 需要较多配置 - 社区成熟用的人多 - 灵活,可配置 |
- Qunit - 出自jquery, - 后独立出来不再依赖jquery, - 已经被其他框架从各方面超越 |
- intern - SitePen公司推出 - 功能比较齐全 - 使用人少,比较小众 |
2、断言库
- chai - 目前流行的断言库, - 支持BDD、TDD两种风格,全面 |
- should - TJ出品, - API予以较好, - 文档不足 |
- expect - should的子集, - 没有亮点 |
- assert - node核心模块, - node运行环境可以直接使用, - 语法弱 |
3、mock库
- sinon.js - 提供spies、stubs、mocks,还有fake timers、fake XmlHttpRequest 等功能 |
经过选型,最终决定使用
mocha + chai + sinon |
名词解释:
- 测试框架:即组织你的测试,当前流行 BDD 的测试结构。
- 快照测试(snapshot testing):测试 UI 或数据结构是否和之前完全一致,通常 UI 测试不在单元测试中
- 仿真(mocks, spies, and stubs):获取方法的调用信息,模拟方法,模块,甚至服务器