node.js测试html tdd,nodejs的单元测试框架mocha

# nodejs的单元测试框架mocha

当我们编写比较复杂的项目时,需要对项目的测试用例进行长期跟踪,对单元模块进行质量控制,对开发成果进行自我检验,那么需要一个好用的工具,自学了一下mocha,这个笔记几乎是照搬官网的英文版进行了自我的一番理解的初步呈现,多以条目为主,还没有时间进一步实践,通过强制写笔记的方式,鞭策自己加深理解,学会分享,提高学习力,我在努力。

## 1.安装

```

npm install --global mocha

```

## 2.作为项目开发依赖项安装

npm install --save-dev mocha

## 3.版本注意事项

Mocha v3.0.0 需要npm v2.14.2+

v3.0.0之后,不再依赖字符串匹配来决定执行哪些测试。

.only()可以多次使用来定义要运行的测试子集。

## 4.编码

可以支持before, after, beforeEach, afterEach

## 5.test目录

mocha会运行test目录下所有测试,目录名不能修改。

如果要包含子目录用--recursive

## 6.生成package.json依赖mocha

使用npm init命令生成package.json

## 7.每个测试一段

it("name", function(){…})

## 8.测试原则

一次只测一种情况,测试代码要非常简单cd mocha

## 9.启动命令

* (1).node_modules/mocha/bin/mocha

* (2)先package.json加script{"test":"mocha"},再npm test

## 10.配置debug命令

## 11.段落代码说明

### 特定执行

```

describe.only("#indexOf()", function(){});

```

### 跳过

```

descrip.skip("#indexOf()", function(){});

```

### 跳过多个测试

```

before(function(){

if(/* check test environment */) {

//setup code

} else {

this.skip();

}

});

```

### Diff视图

err.actual err.expected 断言成功失败视图

### require导包

```

var testCase = require('mocha').describe;//可以用更直观的变量名称

```

### 重试测试

```

当调用this.retries(x)时,会重新调用beforeEach及afterEach方法

```

### 动态生成测试

### 定义慢的方法

```

this.slow(10000);

```

### 定义超时的方法

```

this.timeout(500);

```

### 代码级别分为

```

套件级

describe片段

测试级

it片段

钩子级

beforeEach中

```

## 12.mocha的测试接口

BDD,TDD,Exports,QUnit,Require

BDD接口比较常用,之前的例子都是BDD。

TDD接口是类似JUnit的调用方式。

QUNIT扁平化的样子类似于TDD,但也支持before,after,beforeEach,afterEach

## 13.测试工具

Wallaby.js

mocha摩卡侧边栏

## 14.测试报告

spec报告器:可以输出嵌套的分层视图

点阵报告器:是最小化的输出,可以用一系列字符代表测试用例,失败是红色叹号,待定是蓝色逗号,慢速是×××显示

NYAN报告器:有一只猫做进度条,这个莫名其妙

TAP报告器:显示每行单元测试明细

LANDING STRIP 报告器:飞机降落的跑道

LIST报告器:明细列表

PROGRESS进展报告器:进度条

MIN报告器:仅显示摘要

DOC报告器:以html格式正文输出

* (1) 安装报告器

```

mocha.setup({

ui:'tdd',

ignoreLeaks: true,

asyncOnly: true

});

```

* (2) 参数指定报告器

```

mocha --reporter list --growl

```

* (3) 变量定义报告器

```

$REPORTER=nyan npm test

```

多次调用回调会抛错

## 15.require('chai')是一个断言库

var should = require('chai').should();

这个可以判断should.exist(bitcore.lib);这些内容是否存在

### 语言链

```

to

be

been

```

### sinon可以创建假服务器

let server = sinon.fakeServer.create();

### sinon提供spy和Stub配合断言框架chai

模拟返回值:sinon.fake.returns(42);

模拟ajax:sinon.replace(jQuery, 'ajax', sinon.fake());

模拟xhr:sinon.useFakeXMLHttpRequest();

模拟服务器:sinon.fakeServer.create()

### proxyquire覆盖依赖性(依赖注入?)

### 模拟database

sinon.mock(database);

## 16.spies、stub与mock区别

stub拥有spies的所有功能,不是为了监视调用情况,而是完全取代。

mock与stub功能一样,都是用来替换指定函数,mock用在替换掉多个方法,stub适用于替换一个函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值