Jasmine的简单的语法
Distribution
Distribution对应的全局函数是 describe(string,function),可以理解为是一个测试集或者测试包(官方称之为suite),主要功能是用来划分单元测试的,describe接受的两个参数,string是这个测试套件的标题或者描述信息,参数function就是实现这个测试套件。describe是可以嵌套使用的。
Specs
Specs对应全局函数是it(string,function),可以将其列理解为测试用例,it接受的两个参数 string是这个测试用例的标题或者描述信息,参数function是这个测试用例的具体实现。
Expectations
Expectations的对应的全局方法是 expect()断言表达式,expect通过链式 Matcher 方法来比较实际值是否和预期值一致,如果一致就是测试通过,Matchers用于比较期望值和实际值并且可以使用not对期望结果的进行否定。
例如下段代码
describe('describe的标题或者描述信息', function () {
it('it 的标题或者描述信息 也可以写成 测试用例的标题', function () {
const a = 12;
const b = 24;
expect(a).toBe(b);
expect(a).not.toBe(null);
});
});
describe('describe的标题或者描述信息', () => {
it('it 的标题或者描述信息 也可以写成 测试用例的标题', () => {
const a = 12;
const b = 24;
expect(a).toBe(b);
expect(a).not.toBe(null);
});
});
这里的测试案例是不会通过的,因为a = 12 和 b = 24 不相等。
需要注意
- 一个测试文件中可以包含多个 describe().
- 一个describe()中可以包含多个it().
- 一个describe()中包含的多个it()函数的中,it()的string参数不能相同,如果相同,则按照一个it()来计算,并且不会执行第二个it().
- 一个it()中可以包含多个 expect().
- 一个it()函数中,所有的expect() 都测试通过才算 it() 测试通过
生命钩子
在jasmine中有四个全局方法作为钩子:
- beforeEach()
- afterEach()
- beforeAll()
- afterAll()
beforeEach() 和 afterEach()
beforeEach()会在describe中的每个it的方法参数的调用前都会执行一次。
afterEach()会在describe中的每个it的方法参数的调用后都会执行一次。
在Angular中使用TestBed进行测试的时候,通常会使用 beforeEach() 来通过调用TestBed.configureTestingModule()动态创建一个用来模拟 @NgModule 的 Angular 测试模块。
如下:
describe('PublicDataService', () => {
beforeEach(() => {
TestBed.configureTestingModule({});
});
});
beforeAll() 和 afterAll()
beforeAll()会在describe中的全部it的方法参数的调用前只执行一次。
afterAll()会在describe中的全部it的方法参数的调用后只执行一次。
this 关键字
可以在beforeEach()和afterEach()的通过this定义属性,this中传递it的this。***注意这里传递值的时候是值传递,***每个it中的this都是相互独立的,改变it中this的属性并不会作用于其他it,也不会影响到beforeEach()和afterEach()中的this。
对于不可用的的测试处理
- 对于describe()
将describe()替换为xdescribe(),那么整个describe()就会跳过去
- 对于it()
在it()中使用全局的pending(reson:string)方法;
describe('describe的标题或者描述信息', () => {
it('it 的标题或者描述信息 也可以写成 测试用例的标题', () => {
const a = 12;
const b = 24;
expect(a).toBe(b);
expect(a).not.toBe(null);
pending('未写完,待续');
});
});
此时这个测试用例就会跳过去。
了解更多,请参见Jasmine官方文档