Karma - Jasmine语法
Jasmine
可结合Karma
使用,提供具体的测试代码。它是一个行为驱动测试(BDD)的测试框架,不依赖与浏览器、dom或其他js框架,可以方便地在各种场景中使用。
1. 套件suit: describe
全局函数describe(description, specDefinitions)
用于创建一个套件,封装一组测试代码
Name | Type | Description |
---|---|---|
description | String | 定义分组名称 |
specDefinitions | function | 定义一个函数,包含一组要测试的内部suit和测试规范specs |
2. 规范spec:lt
全局函数it(description, testFunctionopt, timeoutopt)
定义一个单独的测试规范。一个规范 spec
应该包含一个或多个期望值 expectations
。一个 spec
的所有 expectation
都成功才算为测试成功
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
description |
String | 定义一个规范名称 | ||
testFunction |
implementationCallback | <optional> | 测试代码 | |
timeout |
Int | <optional> | jasmine.DEFAULT_TIMEOUT_INTERVAL |
异步sepc的timeout |
3. 断言expectation: expect
expect| expectAsync (actual) → {matchers}
为spec
创建一个断言 expectation
Name | Type | Description |
---|---|---|
actual |
Object | 要测试的目标变量或对象 |
一个Suite(describe)包含多个Specs(it),一个Specs(it)包含多个断言(expect)。
4. 匹配器Matcher
每一个匹配器实现的是真实值和期望值的比较。它负责报告给jasmine如果期望值是真的或者假的。jasmine将使这个规范通过或者失败。
所有matcher请参考: https://jasmine.github.io/api/3.5/matchers.html
not:对matcher进行反操作
expect(something).not.toBe(true);
4.1 Number匹配
- boBe(expected):用来比较数字或者字符串是否相等,不支持对象的比较。会执行===操作
it("The 'toBe' matcher compares with ===", function() {
var a = 12;
var b = a;
expect(a).toBe(b);
expect(a).not.toBe(null);
});
测试结果
-
toBeGreaterThan(expected):用于
Number
类型的比较,实际值要大于期望值 -
toBeGreaterThanOrEqual(expected):用于
Number
类型的比较,实际值大于或等于期望值 -
toBeLessThan(expected):用于
Number
类型的比较,实际值小于期望值 -
toBeLessThanOrEqual(expected):用于
Number
类型的比较,实际值小于等于期望值 -
toBeNegativeInfinity():实际值是否是 -Infinity
-
toBePositiveInfinity():实际值是否是 Infinity
-
toBeNaN(expected):判断实际值是否是NaN (not a number)
4.2 Object匹配
- toEqual(expected):可以用来比较简单的文本和变量,还有对象是否相等。可用于深比较
it("The 'toEqual' for deep comparision", function() {
var bigObject = {
foo: ['bar', 'baz']
};
var anotherObject = {
foo: 'bar'
};
expect(bigObject).toEqual({ foo: ['bar', 'baz'] });
// expect(anotherObject).toEqual({ foo: ['bar', 'baz'] });
});
测试结果
-
toBeInstanceOf(expected):判断实际值是否是期望类的一个实例,
expected
为类型(Number, Object 等) -
toContain(expected):实际值是否包含期望值,
expected
为要匹配的值 -
toBeUndefined():实际值是否是 undefined
4.3 Boolean匹配
-
toBeNull():实际值是否是 null
-
toBeTrue():实际值是否是 true
-
toBeTruthy():实际值是否是 truthy