使用Mocha对node项目接口进行单元测试

一.安装Mocha,supertest并配置Mocha

npm i mocha supertest -D

在package.json的script.test 注意配置--exit操作符可以运行完毕后自动关闭运行脚本

{ 
  "scripts": {
    "test": "mocha --exit"
  }
}

二.实战测试项目接口

1. 简单写一个服务器

//app.js
const Koa = require('koa2');
const app = new Koa();
app.use((ctx,next)=>{
    ctx.response.type = 'text/html';
    ctx.body = `${ctx.url}`;
});
module.exports = app;

2. 写测试代码

//app.test.js
const 
    request = require('supertest'),
    app = require('../app');
describe('#test koa app',function(){
    let server = app.listen(9900);
    describe('#test server',function(){
        it('#test GET /',async function(){
           await request(server).get('/sky').expect(200,'/sky');
        })
    })
})

3. 进行测试

skymac@skymacdeMBP machajs % npm test

> machajs@1.0.0 test /Users/skymac/Desktop/all-demo/machajs
> mocha
  #test koa app
    #test server
(node:23361) [DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated
      ✓ #test GET /


  1 passing (25ms)

点击访问原文地址

单元测试是一种软件测试方法,用于测试代码的最小可测试单元。在Node.js,可以使用Mocha和Chai等测试框架进行单元测试。下面是一个使用Mocha和Chai测试一个简单函数的例子: ```javascript // 引入断言库chai var assert = require('chai').assert; // 引入要测试的函数 var add = require('../add.js'); // 编写测试用例 describe('add', function() { it('should return 3 when the input is 1 and 2', function() { assert.equal(add(1, 2), 3); }); }); // add.js function add(a, b) { return a + b; } module.exports = add; ``` 在上面的例子,我们首先引入了Chai的断言库,然后引入了要测试的函数add。接着,我们使用describe函数定义了一个测试套件,使用it函数定义了一个测试用例。在测试用例,我们使用assert.equal函数断言add(1, 2)的返回值应该等于3。最后,我们将add函数导出,以便在测试文件引入。 除了使用Mocha和Chai,还可以使用SuperTest对HTTP接口进行测试。SuperTest是一个基于SuperAgent的库,可以方便地模拟HTTP请求和响应。下面是一个使用SuperTest测试HTTP接口的例子: ```javascript // 引入SuperTest和要测试的应用程序 var request = require('supertest'); var app = require('../app'); // 编写测试用例 describe('GET /', function() { it('should return "Hello, world!"', function(done) { request(app) .get('/') .expect(200) .expect('Hello, world!') .end(done); }); }); // app.js var express = require('express'); var app = express(); app.get('/', function(req, res) { res.send('Hello, world!'); }); module.exports = app; ``` 在上面的例子,我们首先引入了SuperTest和要测试的应用程序app。接着,我们使用describe函数定义了一个测试套件,使用it函数定义了一个测试用例。在测试用例,我们使用request函数模拟了一个GET请求,并使用expect函数断言响应的状态码应该为200,响应的内容应该为"Hello, world!"。最后,我们将app导出,以便在测试文件引入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值