node.js学习笔记(2)——mocha模块测试

一、开发环境

开发IDE: vscode,node

参考书籍《node.js入门经典》

二、断言assert

node自带断言模块assert,提供了简单测试的框架。以下是简单的测试样例

var assert = require('assert');
assert.equal('',0);
assert.strictEqual('',0);

通过var assert = require('assert');命令获取断言模块,调用方法编写测试。equal方法返回的是运算符 == 返回的结果,strictEqual方法返回的是运算符 === 的结果。上述结果应为true和false.

若测试成功,终端应该看不到任何输出,若测试失败,则应抛出异常。

三、mocha模块

1. mocha和mongoose, socket.io一样,是第三方模块,用于使用模块化方法测试node.js程序,使用前需要通过npm安装相关依赖。项目链接:https://github.com/mochajs/mocha

2. 为项目添加测试模块。新建tasks.js文件,写入以下代码

var http = require('http');
var assert = require('assert');

describe('api v1', function(){
    describe('GET /api/v1/tasks', function(){
        it('should return a 200 response', function(done){
            http.get({
                path: '/api/v1/tasks',
                port: 3000
            }, function(res){
                assert.equal(res.statusCode, 200, 'Expected: 200 Actual: ' + res.statusCode);
                done();
            })
        })
        it('should return JSON', function(done){
            http.get({
                path: '/api/v1/tasks',
                port: 3000
            }, function(res){
                assert.equal(res.headers["content-type"], "application/json; charset=utf-8", 
                'Expected: application/json; charset=utf-8 Actual: ' + res.headers["content-type"]);
                done();
            })
        })
    })
})

可以看到mocha模块使用时语法和英语语法非常相近。在it方法第一个参数中描述了具体要做的内容,在回调函数中写入执行的操作。以上代码所做的事情是当访问 localhost:3000/api/v1/tasks 时判断端口号是否为3000和是否以JSON格式返回内容。

3. app.js中与测试相关的代码

app.use('/api/v1/tasks', function(req, res, next){
    Task.find({}, function(err, doc){
        res.send(doc);
    });
});

4. 在package.json中添加依赖,写入npm test命令。或者也可以直接在控制台使用mocha tasks.js命令

{
    "name": "example",
    "version": "0.0.1",
    "private": true,
    "scripts": {
        "start": "node app.js",
        "test": "mocha tasks.js"
    },
    "dependencies": {
        "express": "^4.16.3",
        "mongoose": "~4.0.0",
        "cookie-parser": "~1.4.3"
    },
    "devDependencies": {
        "mocha": "^5.2.0"
    }
}

5. 应该获取的结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值