Node.js 使用 Jest 和 supertest 做接口测试
var assert = require("assert");
var request = require('supertest');


// describe('接口测试', async function () {
const http = require('http');
const app = require('../../app');
const PORT = process.env.PORT || 3003;
const SERVER = http.createServer(app.callback());


it('获取 API 版本信息', (done) => {
  let res = request(SERVER)
    .get('/v1')
    .expect('Content-Type', /application\/json/)
    .expect(200)
    .end(function (err, response) {
      if (err) throw err;
      // if (response.body.name != "Boar") throw Error("获取版本信息失败");
      assert.equal(response.body.name, "Boar");
      done();
    });
});


it('登录成功', (done) => {
  let res = request(SERVER)
    .post('/v1/auth/login')
    .send({
      "mobile": "13366660012",
      "password": "123456"
    })
    .expect('Content-Type', /application\/json/)
    .expect(200)
    .end(function (err, response) {
      if (err) throw err;
      assert(response.body.token, "token 没有获取到");
      done()
    });
});


it('登录接口,用户名或密码错误', (done) => {
  let res = request(SERVER)
    .post('/v1/auth/login')
    .send({
      "mobile": "13366660012",
      "password": "123456-error"
    })
    .expect('Content-Type', /application\/json/)
    .expect(400)
    .end(function (err, response) {
      if (err) throw err;
      assert.ok(response.body.error, "没有获取到错误信息");
      done()
    });
});



SERVER.close();


也可以直接请求API地址:

var config = {
  host: 'http://local.restfulapi.cn:8081'
};


var assert = require("assert");
var request = require('supertest')(config.host);


it('获取 API 版本信息', (done) => {
  request
    .get('/wp-json/verytheme/v1/options')
    .expect('Content-Type', /application\/json/)
    .expect(200)
    .end(function (err, response) {
      if (err) throw err;
      // console.log("response: ", response.body, response.statusCode)
      // if (response.body.name != "Boar") throw Error("获取版本信息失败");
      assert.equal(response.body.name, "koa restful api");
      done();
    });
});



Node.js 未来的单元测试:

https://javascript.net.cn/articles/874

修改时间 2022-04-28

真诚赞赏,手留余香
赞赏
JavaScript,Node.js
Node.js 使用 Jest 做单元测试
2022-02-22
CSS
CSS 媒体特性 prefers-color-scheme
2022-02-22
ngtwewy
在什么样的花园里面,挖呀挖呀挖
种什么样的种子,开什么样的花
随机推荐
Debian11 安装笔记3:安装 MySQL 5.7
MySQL 的 sql_mode 模式介绍:为什么 MySQL 中 int,float,double 类型字段插入空字符时自动转为0
Vue3 挂载全局方法
p 标签里面不能嵌套块级元素
WordPress 按自定义排序的两种方法
CSS 滚动条样式修改
Node.js 的 URL 的模块
SQL 注入的生命力
FFmpeg 修改默认音轨
curl 的用法指南

微信联系我

夜间模式切换
回到顶部