美文网首页
Jest初识

Jest初识

作者: 王二麻子88 | 来源:发表于2021-03-23 21:04 被阅读0次

Jest入门

注意:

    jest是默认使用 CommonJs进行模块的导入导出,  如果需要使用 ES6的导入导出, 则需要babel编译器进行转化, 将 ES6 module 转为 CommonJs
  1. 下载babel编译器核心文件

     npm i @babel/core@7.4.5 @babel/preset-env@7.4.5 --dev
    

    注意: 7.4.5 是babel编译器的常用版本

  2. 项目根目录创建 .babelrc , 并写入如下内容:

    {
      "presets": [
        [
          "@babel/preset-env", {
          "targets": {
            "node": "current"
          }
        }
        ]
      ]
    }
    

值得注意的是, 一般这种转化, 在用脚手架创建项目的时候就会处理好, 一般不需要额外处理

一. 安装Jest

  1. npm 安装 Jest

    npm install jest@24.8.0 --dev
    
  2. 安装 IDE对Jest的支持 (以 webstorm为列, 可无视此步)

    依次点击 setting / Language & Frameworks/ JavaScript / Library / download / jest 即可

  3. 生成 jest测试配置文件

    • npx jest --init
    • 一直选择确定即可
  4. 验证是否操作成功

    • 在项目根目录, 新建一个 foo.js, 并写入

      function foo() {
          return "foo"
      }
      module.exports = {
          foo
      }
      
    • 在同级 创建 foo.test.js, 并写入

      const fooObj = require("./foo.js");
      const {foo} = fooObj;
      
      test("第一个测试用例", ()=>{
          expect(foo()).toBe("foo")
      })
      
    • 在 命令行运行

      jest
      
    • 当有正常内容输出即为安装成功

注意上述, 这些步骤适用于初学测试者, 一般都是通过脚手架自动创建没有那么麻烦

代码覆盖率

在执行 npx jest --init 会生成代码覆盖率的配置, 一般来说是默认开启的

作用类似 webpack 的打包分析的插件

执行方法: jest --coverage

注意, 在执行的过程中有可能 出现缺包的情况, 把包装上重新运行, 实在不行就 重装 jest

二. 常用测试匹配器

1. 比较相等

1.1 严格相等
test("测试方法1-200", ()=>{
  expect(foo1(200)).toBe("大于200")
})
1.2 值相等
test("toEqual值相等", ()=>{
  let a = {name: 'wang'};
  //  expect(a).toBe({name: 'wang'});  // 用例不通过
  expect(a).toEqual({name: 'wang'});  // 测试值相等
});

2. 数字匹配器

2.1 大于(小于) 匹配器
test("toBeGreaterThan匹配器", ()=>{
  let a = 3;
  // 测试 a 是否小于2
  expect(a).toBeGreaterThan(2);  // 大于
  expect(a).toBeLessThan(4);  // 小于
  expect(a).toBeGreaterThanOrEqual(3);  // 大于或者等于
  expect(a).toBeLessThanOrEqual(4);  // 小于或者等于
});
2.2 浮点比较匹配器
test("toBeCloseTo匹配器", ()=>{
  let a = 0.1;
  let b = 0.2;
  // 测试 a 是否小于2
  // expect(a + b).toEqual(0.3)  // 0.30000000000000004
  // 上述测试用例不会通过, 因为 js 本身的设计缺陷使之在浮点运算上存在问题
  expect(a+b).toBeCloseTo(0.3);  // 此时测试通过
});

3. 字符串匹配器

3.1 包含匹配器
// 类似于, indexOf
test("toMatch匹配器", ()=>{
  const str = "wang, er, ma, zi";
  expect(str).toMatch("wang");  // 类似于 indexOf
});

3.2 数组包含匹配器

test('test toContain', () => {
    const arr = ["wang", "er", "ma", "zi"];
    // expect(arr).toContain("wan");  // 测试用例不通过
    // expect(arr).toContainEqual("wan")  // 测试用例不通过
    expect(arr).toContain("wang");
})

相关文章

网友评论

      本文标题:Jest初识

      本文链接:https://www.haomeiwen.com/subject/mqrqhltx.html