Jest学习笔记(一)

一、Jest 基本概念

       Jest 是Facebook的一个专门进行Javascript单元测试的工具,适合React全家桶使用,具有零配置、内置代码覆盖率、强大的Mocks等特点。

安装:

  1. npm i jest -D(安装到本地)
  2. npm i jest -g(安装到全局)

运行:

  1. npx jest(安装到本地的前提下)
  2. jest(安装到全局的前提下)
  3. 修改"script" 中的"test""jest"后使用npm run testnpm t

零配置:
但测试用例文件名格式为**test.js(默认配置下)

基本方法:

  • 分组(Test Group):descripe(描述语,function)
  • 测试用例(Test Case):test(描述语,function)
  • 断言(Assert):expect(运行需测试的方法并返回实际结果).toBe(预期结果)

例:

Pencil.query =(name, url)=> {  //方法,返回捕获
    // ?hello=test&wonghan=handsome
    var reg = new RegExp('(?:\\?|&)' + name + '=(.*?)(?:&|$)')
    var ret = reg.exec(url) || []
    return ret[1]
}
test('query',()=>{  // testCase
    // 断言
    expect(Pencil.query('hello', '?hello=test')).toBe('test')
    expect(Pencil.query('hello', '?hello2=test')).toBe(undefined)  
    //可以写多个`ecpect()`
})
test('query2',()=>{
    expect(Pencil.query('hello/test', '?hello/test=test')).toBe('test')
}) 
    //可以写多个`test()`
describe('test query',()=>{
    test('query3',()=>{  // testCase
        // assert
        expect(Pencil.query('hello', '?hello=test')).toBe('test')
        expect(Pencil.query('hello', '?hello2=test')).toBe(undefined)
    })
})

结果:

Jest学习笔记(一)_第1张图片
测试结果

二、Jest 配置

虽然说Jest是零配置,但也是可以配置

(一)配置位置

1. package.json
package.json添加配置项"jest" : { 配置项 }

2. jest.config.js
新建jest.config.js并添加配置项module.exports = { 配置项 }

3. 命令行(独有的option)
见:命令行配置

(二)配置项

1. testMatch
设置识别哪些文件是测试文件(glob形式),与testRegex互斥,不能同时写

testMatch: ['\*\*/\_\_tests\_\_/\*\*/\*.js?(x)','\*\*/?(*.)(spec|test).js?(x)']

2. testRegex
设置识别哪些文件是测试文件(正则形式),与testMatch互斥,不能同时写

testRegex: '(/\_\_tests\_\_).*|(\\\\.|/)(test|spec))\\\\.jsx?$'

3. testRnviroment
测试环境,默认值是:jsdom,可修改为node

testEnvironment: 'jsdom'

4. rootDir
默认值:当前目录,一般是package.json所在的目录。

rootDir: ' '

5. moduleFileExtensions
测试文件的类型

moduleFileExtensions: ['js','json','jsx','node']

一般配置:

module.exports = {
    testMatch: ['/test/\*\*/\*.js'],
    testEnvironment: 'jsdom',
    rootDir: '',
    moduleFileExtensions: ['js','json','jsx','node']
}

三、Jest Matchers

       Matchers俗称断言库,例如上面的expect().toBe()便是其中之一,其他常见用法如下:

1.相等断言

toBe(value): 比较数字、字符串
toEqual(value): 比较对象、数组
toBeNull()
toBeUndefined()

2.包含断言

toHaveProperty(keyPath, value): 是否有对应的属性
toContain(item): 是否包含对应的值,括号里写上数组、字符串
toMatch(regexpOrString): 括号里写上正则

3.逻辑断言

toBeTruthy()
toBeFalsy()
在JavaScript中,有六个falsy值:false0''nullundefined,和NaN。其他一切都是Truthy。

toBeGreaterThan(number): 大于
toBeLessThan(number): 小于

4.not

取反,用法见下面例子

例:

test('matchers',()=>{
    const a = {
        hello: 'jest',
        hi :{
            name: 'jest'
        }
    }
const b = {
    hello: 'jest',
    hi:{
        name: 'jest'
    }
}
// 以下结果均为true
expect(a).toEqual(b)
expect([1,2,3]).toEqual([1,2,3])
expect(null).toBeNull()
expect([1,2,3]).toContain(1)
expect(b).toHaveProperty('hi')
expect('123').toContain('2')
expect('123').toMatch(/^\d+$/)
expect('123').not.toContain('4')
})
  • 使用npx jest测试执行,结果为passed

附:官方文档

你可能感兴趣的:(Jest学习笔记(一))