学习 Jest - 匹配值
匹配器
相等
test('2 + 2 = 4', () => {
expect(2 + 2).toBe(4)
})
// toBe 用于测试精确相等性
// 检查对象使用 toEqual
// toEqual 会递归检查对象或数组的每个字段
test('object assignment', () => {
const data = { one: 1 }
data['two'] = 2
expect(data).toEqual({ one: 1, two: 2 })
})
匹配值
test('value is toEqual type', () => {
const _Null = null
const _Undefined = undefined
const _Defined = 'a'
const _True = true
const _False = false
// 仅匹配 null
expect(_Null).toBeNull()
// 仅匹配 已定义的值
expect(_Defined).toBeDefined()
// 仅匹配 undefined
expect(_Undefined).toBeUnfined()
// 仅匹配 true
expect(_True).toBeTruthy()
// 仅匹配 false
expect(_False).toBeFalsy()
})
数字
test('2 + 2', () => {
const value = 2 + 2
// >
expect(value).toBeGreaterThan(3)
// >=
expect(value).toBeGreaterThanOrEqual(3.5)
// <
expect(value).toBeLessThan(5)
// <=
expect(value).toBeLessThanOrEqual(4.5)
// =
expect(value).toEqual(4)
expect(value).toBe(4)
// 浮点
expect(value).toBCloseTo(0.3)
})
字符串
test(' There is no I in string', () => {
// 使用正则匹配字符串
expect('ABCDEFG').not.toMatch(/I/)
expect('ABcDEFG').toMatch(/I/)
})
数组和可迭代对象
const list = [
'A', 'B', 'C', 'D', 'E', 'F'
]
test('list is not has G', () => {
// 检查是否包含 G
expect(list).toContain('G')
})
异常
function compileAndroidCode () {
throw new Error('you are using the wrong JDK')
}
test('compiling android goes as expected', () => {
// 测试调用时是否触发错误
// 可以使用必须包含在错误消息中的 字符串 或 正则
// 或者可以使用 正则 匹配精确的错误消息
// 触发错误函数必须在包装函数中调用
expect(() => compileAndroidCode()).toThrow()
expect(() => compileAndroidCode()).toThrow(Error)
expect(() => compileAndroidCode()).toThrow('you are using the wrong JDK')
expect(() => compileAndroidCode()).toThrow(/JDK/)
expect(() => compileAndroidCode()).toThrow(/^you are using the wrong JDK$/)
expect(() => compileAndroidCode()).toThrow(/^you are using the wring JDK!$/)
})
学习 Jest - 匹配值
http://localhost:8080/archives/f15d2149-ff15-4bcc-bd5a-f2c2653264ee