在编写前端测试代码的过程中, 几乎所有的测试框架都提供了根据功能、模块(module ,spec
)来切分测试用例的设计, 由于测试代码简单,直接,直接反应API
的特点,我们编写测试代码的体验很大程度上取决于所选用的断言库, 以下是我对目前几款主流断言库的选型分析笔记:
better-assert
C-style
TDD
断言库由TJ Holowaychuk 发起
目前Github上的有 : 131 star 14 fork
API 样例
assert('tobi' == user.name)
assert('number' == typeof user.age)
should.js
BDD
风格断言库同样由 TJ Holowaychuk 发起
目前Github上的数据: 384 Star , 200 fork ( TJ放弃维护后由新开发者接手)
API样例
foo.should.be()
bar.should.have()
foo.should.bot.be()
expect.js
追求极简的
BDD
风格断言库基于
should.js
简化目前Github上的数据: 926 star 135 fork
API样例
expect(foo).to.be()
expect(foo).to.eql()
expect(foo).to.be.a()
expect(foo).not.to.be.an()
chai
BDD/TDD
双模 ,同时支持should / expect / assert
三种风格的断言库
强大插件机制chai-webdriver
Github上的数据1559 star 150 fork
API样例:
should style: foo.should.be.a()
expect style: expect(foo).to.be.a() // 近Jasmine风格
assert style: assert.equal(foo, 'bar')
其他
Jasmine.js 测试框架中的断言库十分类似
Chai expect
和expect.js
( Jasmine历史比前两者悠久).assert
风格最保守 ,should
风格需要修改prototype
最为激进。不考虑
Node
环境的话,Jasmine.js
是好选择我目前倾向于
Mocha + Chai
的测试方案
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。