单元测试

TDD 和 BDD 的区别

从各自的定义分析:TDD 是一种从测试验收层面来推动整个项目开发的技术;BDD 是一种对系统行为进行设计的协作技术。 从参与者来分析:TDD 的参与者是开发和测试之间;BDD 是专注于参与项目协作的每一个人员与用户之间。

JS 测试框架 Jest/Mocha/Ava 的简单比较

单元测试和集成测试的区别

  • 单元测试:英文是(unit testing) 单,是指对软件中的最小可测试单元进行检查和验证。前端所说的单元测试就是对一个模块进行测试。也就是说前端测试的时候,你测试的东西一定是一个模块。
  • 集成测试:也叫组装测试或者联合测试。在单元测试的基础上,将所有模块按照涉及要求组装成为子系统或系统,进行集成测试。

配置文件

初始化 npx jest --init
生成jest.config.ts文件

package.json 一些常用 script

"scripts": {
"test": "jest --watchAll",
"coverage":"jest --coverage"

},


让 Jest 支持 import 和 ES6 语法

在 Jest 里有一个 babel-jest 组件,我们在使用 yarn test 的时候,它先去检测开发环境中是否安装了 babel,也就是查看有没有 babel-core,如果有 bable-core 就会去查看.babelrc 配置文件,根据配置文件进行转换,转换完成,再进行测试。
yarn add @babel/core@7.4.5 @babel/preset-env@7.4.5 --dev
.babelrc

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

基本格式

test("测试严格相等", () => {
  const a = { number: "007" };
  expect(a).toBe({ number: "007" }); // fail
});

全局方法

  • 4 个钩子
    • beforeAll
    • afterAll
    • beforeEach
    • afterEach
  • test
    • concurrent
    • each
    • only
    • skip
    • todo
  • describe
    • each
    • only
    • skip

匹配器

  • toBe(xx)
  • toEqual(xx)
  • toBeNull()
  • toBeDefined()
    需要注意null也可以通过,只要是 defined
  • toBeTruthy()
  • toBeFalsy()
  • toBeGreaterThan(xx)
  • toBeLessThan()
  • toBeGreaterThanOrEqual()
  • toBeLessThanOrEqual()
  • toBeCloseTo()
    这个是可以自动消除 JavaScript 浮点精度错误的匹配器,举个例子,比如我们让 0.1 和 0.2 相加,这时候 js 得到的值应该是 0.30000000000004,所以如果用 toEqual()匹配器,测试用例会通过不了测试的。
  • toMatch()
    字符串包含字符串
  • toContain()
    数组包含 item
  • toThrow()
    专门对异常进行处理的匹配器,可以检测一个 Function 会不会抛出异常
    例解
  • not
    是 Jest 中比较特殊的匹配器,对其他匹配器进行取反

4 个钩子函数

钩子函数的特点如下

  • 钩子函数在父级分组可作用域子集,类似继承
  • 钩子函数同级分组作用域互不干扰,各起作用
  • 先执行外部的钩子函数,再执行内部的钩子函数

对测试用例分组 describe

describe 可以嵌套
结构:

describe("分组1"),
  () => {
    test("test1", () => {});
    test("test2", () => {});
  };

进阶短教程 > 技术框架 > React 单元测试策略及落地

引入 Enzyme

Enzyme 是一个库,用于在测试时处理你的 React 组件。它由 Airbnb 开发


   转载规则


《单元测试》 Ryan Who 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
react-HOC 浅谈 react-HOC 浅谈
HOC 其实有两种模式, 一种是『属性代理』属性代理大家很熟悉了,也是大家最常用的一种 HOC 形式,主要是用于修改 props,抽象 state, 调取 refs 等等,就不多赘述了,以上这些 React Hooks 都能完成的更出色.
2021-04-26
下一篇 
js DOM对象和DOM js DOM对象和DOM
Property 和 Attributes详解来自概念: property是DOM中的属性,是JavaScript里的对象; attribute是HTML标签上的特性,它的值只能够是字符串; 特性: property能够从attrib
2021-04-13
  目录