单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
- �对于一些重要底层的公共方法
- 逻辑分支比较多,复杂的函数
- 时间紧迫,线上hotfix等情况
- 组件
比起服务端,前端�代码的不可控因素更多,更容易出现bug,完全进行测试覆盖需要话费的�人力成本也更大。
- 减少人力成本,提高代码质量
- 提高代码测试覆盖度
- 需要额外编写测试脚本,需要增加额外的时机成本
- mocha,�jstest, jasmine... wiki
-
测试框架 (mocha,�jstest, jasmine...)
-
测试管理工具 (Selenium、WebDriver/Selenium 2、Mocha、JsTestDriver、HTML Runners和Karma) 组织和运行整个测试的工具,不用我们手动一个个跑测试
-
断言库 (should.js、expect.js、chai.js,...) (描述你的具体测试的API)
should style: foo.should.be.a() expect style: expect(foo).to.be.a() // 近Jasmine风格 assert style: assert.equal(foo, 'bar')
- chai.js同时支持 should / expect / assert 三种风格的断言库
npm install -g jasmine
jasmine init
- suite
- spec
- Matchers
常用的Matchers有: toBe():相当于===比较。 toNotBe() toBeDefined():检查变量或属性是否已声明且赋值。 toBeUndefined() toBeNull():是否是null。 toBeTruthy():如果转换为布尔值,是否为true。 toBeFalsy() toBeLessThan():数值比较,小于。 toBeGreaterThan():数值比较,大于。 toEqual():相当于==,注意与toBe()的区别。 一个新建的Object不是(not to be)另一个新建的Object,但是它们是相等(to equal)的
- es6转码
####安装
npm install karma --save-dev npm install karma-jasmine karma-chrome-launcher jasmine-core --save-dev
- 由于我们的被测试代码是用es6写的,所以还需要对�源代码进行转译,使用karma-webpack插件编译并引入源代码
npx karma init