Jasmine 是一个用 Javascript 代码的行为驱动测试框架,它不依赖于任何其它 Javascript 框架。Jasmine 与 Mocha 大概是目前最火的两个单元测试框架了。
Jasmine API
describe
describe 是 Jasmine的全局函数,也称之为’测试套件’,用于创建一组相关的测试。它通常包含两个参数:描述当前套件的字符串和实际执行的函数。
1 | describe('A suite is just a function', function() { |
it
it块成为测试用例,定义一个单独的测试case,是测试的最小单位。一个 it 应当包含至少一个 expectation。
1 | it(description, testFunction, timeout) |
it 函数包含三个参数, 第一个参数为字符串,用于描述当前测试用例;第二个参数为实际执行的函数,第三个参数为一个异步的超时时间。
1 | describe('A suite is just a function', function() { |
expectations
expectations 是由方法 expect 方法创建的断言, 返回 true 或 false 。expect 语句传递一个参数,及要测试的实际值,后面紧跟一个 Matchers,来判断测试是否正确。
1 | describe('A suite is just a function', function() { |
Matchers
Matchers 用来对实际测试值与期望值进行比较,实现断言操作。
任何Matcher都能通过在expect调用Matcher之前,通过调用not来实现一个否定断言。
常用的Matchers():
- not 表示对后面断言的否定
- toBe() 判断实际值与期望值是否相等,等价于 ===
- toBeDefined() 判断变量或属性是否已声明且赋值(是否不等于undefined)
- toBeUndefined() 判断变量或属性是否已声明且赋值(是否等于undefined)
- toBeNull() 判断变量是否为null
- toBeNaN() 判断变量是否为NaN(not a number)
- toBeTruthy() 判断变量如果转换为布尔值,是否为true
- toBeFalsy() 判断变量如果转换为布尔值,是否为false
- toEqual() 判断变量是否相等
- toBeLessThan() 判断实际值是否小于期望值
- toBeLessThanOrEqual() 判断实际值是佛小于等于期望值
- toContain() 判断数组或字符串是否包含期望值,不能用于对象判断
- toMatch() 判断实际值是否与正则匹配
测试用例钩子函数
1 | describe('test', function() { |
this 关键字
describe 里的每个 beforeEach, afterEach, it 的 this 都是相同的。
describe 嵌套
describe 可以嵌套, 不同 describe 函数体执行时,从外到内依次执行 beforeEach,每个 it 执行结束时,会按从内到外依次执行 afterEach。
1 | describe('test describe', function() { |