首先去Qunit官网下载。

Qunit有一个js脚本文件和一个css我们在页面中引入它。

<script src="qunit-2.0.1.js"></script>
<link rel="stylesheet" href="qunit-2.0.1.css">

页面中有两段必须的标签。

<div id="qunit"></div>
<div id="qunit-fixture"></div>

不写上这个,页面就是空白的了,这两个标签用来显示测试结果以及其他的东西。

接下来我们可以新建一个js文件来进行简单的测试了。

function add(a, b) {
  return a + b;
}

QUnit.test( "add test", function( assert ) {
  assert.ok( add(2,3) === 6, "add IS 5" );
});

结果如下:

看到圈起来的没

QUnit.test( "add test", function( assert ) {
  assert.ok( add(2,3) === 6, "add IS 5" );
});

QUnit.test表示你要测试一段代码,第一个也就是我圈起来的那段,只是用来显示的,第二个参数是一个函数,里面放一个assert参数,这个测试有很多的属性,在这里我们用到的是ok这个函数可以用来测试一个布尔值,第一个写你要测试的,如果相等表示通过,否则会报错,第二个也是用来显示的。

如果是通过的会是这样的。

如果你想比较两个值是否相等而不是比较布尔值,可以用equal函数。

QUnit.test( "test", function( assert ) {
  assert.equal( 555 , 555 , "IS 555 ?" );
});

n1:实际值

n2:希望值

n3:看看而已

如果这样:

QUnit.test( "test", function( assert ) {
  assert.equal( '555' , 555 , "IS 555 ?" );
});

因为equal用的是Javascript中的==比较,所以会隐式转换。

如果不想这样我们可以使用deepEqual函数

QUnit.test( "test", function( assert ) {
  assert.deepEqual( '555' , 555 , "IS 555 ?" );
});

deepEqual和equal函数功能差不多,不过它用的是===全等。

如果是异步的话这些就有些无能为力了,不管QUnit提供了几个函数可以解决。

QUnit.test( "test", function( assert ) {
  var done = assert.async();
  var qunit = document.getElementById('qunit');
  qunit.onclick = function(){
    assert.ok( true , "IS 555 ?" );
    done();
  };

});

assert.async函数用来创建一个异步操作它会返回一个函数,这个可以在你测试的下方执行一下done();

但是正如QUnit官方说的:

Call assert.async() for each operation. Each done callback can be called at most once.

调用每个操作async()断言,每个所做的回调可以至多被调用一次。

也就是说只能执行一次,看这个。

会多一次的,也就是说如果你想执行多次这样还不行,但是有一个叫啥断言的东西,我们来看看。

QUnit.test( "test", function( assert ) {
  assert.expect(5);
  var done = assert.async(5);
  var qunit = document.getElementById('qunit');
    qunit.onclick = function(){
    assert.ok( true , "istrue" );
    done();
  };

});

assert.expect(5);这里写你要测试的次数,var done = assert.async(5);也要加上次数。

我也醉了为什么要限制这个。

QUnit官网:http://api.qunitjs.com/

刷去吧。

Javascript单元测试之QUnit的更多相关文章

  1. 单元测试之Qunit

    单元测试之Qunit 前言 因为公司开发了一套javascript SDK需要测试,在网上找了很久,找到了JQuery团队开发的QUnit,和基于JUnit的JsUnit,还有一些还没有看,先讲讲QU ...

  2. JS自动化测试 单元测试之Qunit

    前言 因为公司开发了一套javascript SDK需要测试,在网上找了很久,找到了JQuery团队开发的QUnit,和基于JUnit的JsUnit,还有一些还没有看,先讲讲QUnit吧 下载 登录J ...

  3. iOS 单元测试之XCTest详解(一)

    iOS 单元测试之XCTest详解(一) http://blog.csdn.net/hello_hwc/article/details/46671053 原创blog,转载请注明出处 blog.csd ...

  4. 玩转单元测试之Testing Spring MVC Controllers

    玩转单元测试之 Testing Spring MVC Controllers 转载注明出处:http://www.cnblogs.com/wade-xu/p/4311657.html The Spri ...

  5. 玩转单元测试之WireMock -- Web服务模拟器

    玩转单元测试之WireMock -- Web服务模拟器 WireMock 是一个灵活的库用于 Web 服务测试,和其他测试工具不同的是,WireMock 创建一个实际的 HTTP服务器来运行你的 We ...

  6. 单元测试之NSNull 检测

    本文主要讲 单元测试之NSNull 检测,在现实开发中,我们最烦的往往就是服务端返回的数据中隐藏着NSNull的数据,一般我们的做法是通过[data isKindOfClass:[NSNull cla ...

  7. [转载]单元测试之道(使用NUnit)

    首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而又忐忑的心情点击界面上的 ...

  8. 单元测试之道(使用NUnit)

    首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而 又忐忑的心情点击界面上 ...

  9. 使用VisualStudio进行单元测试之二

    借着工作忙的借口,偷了两天懒,今天继续单元测试之旅.前面说了如何进行一个最简单的单元测试,这次呢就跟大家一起来熟悉一下,在visual studio中如何进行数据驱动的单元测试. 开始之前先来明确一下 ...

随机推荐

  1. 字符串流stringstream(头文件sstream)

    今天看到一样很有趣的东西,可以用于各种类型的转换.其实一个文本可以看作一个长长的字符串,整数啊浮点数的都是字符串,于是在字符串流里面就可以很方便地玩转各种类型,比如说: #include<ios ...

  2. easyconf——基于AugularJS的配置管理系统开发框架

    目录 1 easyconf的诞生2 easyconf的设计理念 2.1 总体设计 2.2 细节设计 2.2.1 CRUD操作 2.2.2 即时校验 2.2.3 下拉框设计3 easyconf使用指南 ...

  3. 使用TableViewRow完成下拉菜单效果

    在TableViewRow标签中增加一个属性opened(自己定义的)=true or false 用于标记当前row的状态 ​    ​然后用table_view.deleteRow()方法  参数 ...

  4. zmq学习笔记

    1 zmq_socket(3) Manual Page 1.1 一个socket可连接多个对端socket: 通过使用多个zmq_connect() 1.2 一个socket可绑定到多个地址上接受连接 ...

  5. .net之微信企业号开发(一) 所使用的环境与工具以及准备工作

    前言 一直以来,从事的是.net winform的编程,虽然对移动互联这块很感兴趣,但是由于现有的工作和移动互联之间隔的太远,也就没有时间和精力好好的去研究和实现.今年年初辞职了,刚好朋友那里希望建立 ...

  6. linux启动流程

    看了深入理解linux内核一书的最后对linux启动流程的介绍,下面就把我能理解的写一下吧: bios(硬件加电自检POST,寻找第一个启动设备) the boot loader(可以从硬盘启动也可以 ...

  7. 企业搜索引擎开发之连接器connector(二十九)

    在哪里调用监控器管理对象snapshotRepositoryMonitorManager的start方法及stop方法,然后又在哪里调用CheckpointAndChangeQueue对象的resum ...

  8. oracle迁移mysql数据库注意

    oracle转mysql修改: . substr() substr( string , 0, 10) 这里测试 必须从 第一位获取 既是 substr(string , 1 , 10)2. to_ch ...

  9. tomcat 8在win8.1中的配置

    配置jdk: 三个步骤: 1.环境变量=>新建 JAVA_HOME C:\Program Files\Java\jdk1.8.0_40 2.环境变量=>新建 CLASS_PATH .;%J ...

  10. FreeRTOS和Ucos在任务优先级的区别

    而ucos的任务优先级是任务优先级的数组越小,任务优先级越高.和STM32的中断优先级保持一样的分析,和freeRTOS相反.