通用匹配器
toBe
示例:
test('two plus two is four', () => {
expect(2 + 2).toBe(4);
});
toBe
使用 Object.is
来实现精确匹配。
toEqual
示例:
test('object assignment', () => {
const data = {one: 1};
data['two'] = 2;
expect(data).toEqual({one: 1, two: 2});
});
toEqual
会递归检查对象或数组的每一个字段。
真假值
-
toBeNull
仅匹配null
-
toBeUndefined
仅匹配undefined
-
toBeDefined
与toBeUndefined
相对 -
toBeTruthy
匹配真值 -
toBeFalsy
匹配假值
提示:+0
, -0
, false
, undefined
, null
, ''
, NaN
为假值,其余都为真值。
示例:
test('null', () => {
const n = null;
expect(n).toBeNull();
expect(n).toBeDefined();
expect(n).not.toBeUndefined();
expect(n).not.toBeTruthy();
expect(n).toBeFalsy();
});
test('zero', () => {
const z = 0;
expect(z).not.toBeNull();
expect(z).toBeDefined();
expect(z).not.toBeUndefined();
expect(z).not.toBeTruthy();
expect(z).toBeFalsy();
});
数字
相等或大小判断。
示例:
test('two plus two', () => {
const value = 2 + 2;
expect(value).toBeGreaterThan(3);
expect(value).toBeGreaterThanOrEqual(3.5);
expect(value).toBeLessThan(5);
expect(value).toBeLessThanOrEqual(4.5);
// toBe 和 toEqual 在数字类型上作用等同
expect(value).toBe(4);
expect(value).toEqual(4);
});
由于浮点数的舍入问题,对于浮点数的相等判断请使用 toBeCloseTo
。
示例:
test('adding floating point numbers', () => {
const value = 0.1 + 0.2;
// expect(value).toBe(0.3); 因为舍入问题的存在,这种判断不奏效。
expect(value).toBeCloseTo(0.3); // 这种判断有用。
});
字符串
字符串数据类型可使用正则表达式进行匹配判断。
示例:
test('there is no I in team', () => {
expect('team').not.toMatch(/I/);
});
test('but there is a "stop" in Christoph', () => {
expect('Christoph').toMatch(/stop/);
});
数组
判断数组中是否存在某个特定的元素。
示例:
const shoppingList = [
'diapers',
'kleenex',
'trash bags',
'paper towels',
'beer',
];
test('the shopping list has beer on it', () => {
expect(shoppingList).toContain('beer');
});
异常
测试某个函数抛出异常。
示例:
function compileAndroidCode() {
throw new ConfigError('you are using the wrong JDK');
}
test('compiling android goes as expected', () => {
expect(compileAndroidCode).toThrow();
expect(compileAndroidCode).toThrow(ConfigError);
// 您同样可以使用明确的错误消息或正则表达式
expect(compileAndroidCode).toThrow('you are using the wrong JDK');
expect(compileAndroidCode).toThrow(/JDK/);
});
网友评论