Mocha实践

本文介绍了如何在Node.js中使用Mocha进行单元测试。首先,通过全局安装mocha来开始,接着建立测试目录结构,创建run.bat和spec.bat两个批处理文件以方便执行测试。测试用例采用BDD风格编写,结合should库进行断言,并使用request库调用web服务进行集成测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司最近牵起一片Unit Test热,为了迎合公司的口味,我也只能把unit test(其实我写的不是UT,算是integration/aaceptance test了)加入其中。目前来说,nodeJs的ut框架,最有名的应该是TJ大神的mocha了 (有很详细的官方文档:http://visionmedia.github.io/mocha/)。废话少说,切入正题:


一、安装:mocha是要求全局安装的,那么: npm install -g mocha

二、组织目录结构:


我创建了一个子目录test,用来存放所有的test case,mocha默认会测试./test/*.js。同时我也创建了2个bat文件,用来方便执行test case:

run.bat:执行所有的测试用例,很简单就是调用mocha,-t 5000表示,每个用例5秒超时(默认是2秒)

@ECHO OFF
mocha -t 5000 %1 %2 %3 %4 %5 %6 %7 %8 %9

执行完之后,会看到如下的结果:


spec.bat:测试,并且显示出每个测试用例的说明(可以用来生成描述文档,spec这些的),代码更简单,就是调用run.bat,且多加了一个参数,-R spec。(mocha还支持很多其他的报告格式的!)

@ECHO OFF
run -R spec
运行之后,可以看到如下结果:



三、测试用例编写很简单,我用的是BDD,assert用的是should库,也是TJ大神的作品,另外用了request库来执行web service:

var assert = require("should")
  , request = require('request')
  , settings = require('../settings');

describe('Web Service', function () {
    describe('/', function () {
        it('should return html content', function (done) {
            request(settings.webservice_server, function (error, response, body) {
                if (error) throw error;
                response.should.status(200).html;

                done();
            });
        });
    });

    describe('/products', function () {
        it('should return an array of products', function (done) {
            request(settings.webservice_server + '/products', function (error, response, body) {
                if (error) throw error;
                response.should.status(200).json;
                response.body.should.not.empty;
                var products = JSON.parse(response.body);
                products.should.be.an.instanceOf(Array);
                done();
            });
        });
    });
});

对于异步函数,执行完了,就调用下done。





评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值