📜  QUnit-概述(1)

📅  最后修改于: 2023-12-03 15:04:44.844000             🧑  作者: Mango

QUnit-概述

简介

QUnit是一个JavaScript的单元测试框架,最初是由jQuery的作者编写的,现在已成为一个独立的项目,而且可用于针对任何JavaScript项目编写单元测试。QUnit的设计目标是简单易用和可扩展的,适用于小型和大型的项目,其测试结果可以在任何支持JavaScript的设备上运行。

特点
  • 支持异步测试
  • 可以在命令行运行测试
  • 与jQuery无依赖关系
  • 支持断言库(Assertion),简化测试代码编写
安装
通过CDN引入
<script src="https://code.jquery.com/qunit/qunit-2.16.0.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.16.0.css">
NPM包管理器

首先需要在项目中安装QUnit:

npm install qunit

安装完成后,可以在项目中引入QUnit:

const QUnit = require('qunit');
使用
测试基本结构

QUnit的基本结构如下:

QUnit.test("测试名称", function(assert) {
  assert.ok( 1 == "1", "检查类型转换" );
  assert.equal( 1, "1", "检查类型不严格等于" );
  assert.strictEqual( 1, 1, "检查类型严格等于" );
});

其中,第一个参数是测试名称,第二个参数是一个函数,包含了一堆测试代码。在这个函数中,可以调用各种QUnit提供的测试API(稍后会具体介绍)。

断言库

QUnit提供多种断言,用于判断是否符合预期。

  • assert.ok(value, message) 判断给定值是否为真
  • assert.equal(actual, expected, message) 判断实际值和期望值是否相等
  • assert.strictEqual(actual, expected, message) 判断实际值和期望值是否严格相等
  • assert.deepEqual(actual, expected, message) 判断两个对象是否深度相等
  • assert.notEqual(actual, expected, message) 判断实际值和期望值是否不相等,和assert.equal的作用刚好相反
  • assert.notStrictEqual(actual, expected, message) 判断实际值和期望值是否不严格相等,和assert.strictEqual的作用刚好相反
  • assert.notDeepEqual(actual, expected, message) 判断两个对象是否不深度相等
异步测试

如果测试代码中涉及异步操作,QUnit提供了特殊的API来进行异步测试。

  • assert.async() 获取异步测试控制,返回值是一个函数,调用这个函数表示异步测试完成,可以继续执行测试代码
  • assert.step() 记录一个步骤,用于异步测试的断言,可以在QUnit内部打印出来
命令行测试

如果不想用浏览器来执行测试,可以使用命令行来运行测试。需要安装QUnit的命令行工具:

npm install -g qunit

安装完成后,在项目根目录下执行以下命令:

qunit "test/test.js"

其中,test/test.js表示需要进行测试的文件路径。

结语

QUnit是一个非常好用的单元测试框架,其代码简单易用,特别适合JavaScript项目编写的单元测试。由于其与jQuery无依赖关系,可以用于任何JavaScript项目。