[Node.js] Test Node RESTful API with Mocha and Chai

In this lesson, we will use Chai‘s request method to test our Node application‘s API responses.
By the end of this lesson, you will know how to:
- install the prerequisites to use mocha and chai in your application
- test for HTTP status response codes
- test for a string of text on a page
- test for a json response and validate the properties of the object
- write tests that not only verify the response of your application, but the behavior as well

  const mockRouter = require(‘./routes/mock‘);
  app.use(‘/mock‘, mockRouter);
// routers/mock.js

const express = require(‘express‘);
const router = express.Router();

router
  .get(‘/‘, (req, res, next) => {
    res.status(200)
       .json({ title: ‘Mock test‘ })
  })
  .post(‘/‘, (req, res, next) => {

    const { v1, v2 } = req.body;
    if (isNaN(Number(v1)) || isNaN(Number(v2))) {
      res.status(400)
         .json({ ‘msg‘: ‘You should provide numbers‘ });
    } else {
      const result = Number(v1) + Number(v2);
      res.status(200)
         .json({ result });
    }
  });

module.exports = router;
// test/mock_test.js

const chai = require(‘chai‘);
const chaiHttp = require(‘chai-http‘);
const should = chai.should();
const server = require(‘../../src/app‘);

chai.use(chaiHttp);

describe(‘/mock GET‘, () => {
  it(‘should return json‘, (done) => {
    chai.request(server)
        .get(‘/mock‘)
        .end((err, res) => {
          res.should.have.status(200);
          res.body.should.have.property(‘title‘)
             .and
             .that
             .equal(‘Mock test‘);
          done();
        })
  });

  it(‘should return right value‘, (done) => {
    chai.request(server)
        .post(‘/mock‘)
        .set(‘content-type‘, ‘application/json‘)
        .send({
          v1: 2,
          v2: 3
              })
        .end((err, res) => {
            res.should.have.status(200);
            res.body.should.have.property(‘result‘).that.equals(5);
            done();
        });
  });

  it(‘should return 400 error‘, (done) => {
    chai.request(server)
        .post(‘/mock‘)
        .set(‘content-type‘, ‘application/json‘)
        .send({
                v1: ‘tow‘,
                v2: ‘three‘
              })
        .end((err, res) => {
          res.should.have.status(400);
          res.body.should.have.property(‘msg‘).that.contains(‘provide numbers‘);
          done();
        });
  });
});
时间: 2024-08-05 15:16:49

[Node.js] Test Node RESTful API with Mocha and Chai的相关文章

使用Node.js + MongoDB 构建restful API

很多天前已经翻译了一大半了,今天收收尾~ RESTful API With Node.js + MongoDB Translated By 林凌灵 翻译目的:练练手,同时了解别人的思维方式 原文地址:RESTful API With Node.js + MongoDB 12 Sep 2013 我是一名移动应用开发者,我需要某种后端服务用来频繁地处理用户数据到数据库中.当然,我可以使用后端即服务类的网站(Parse, Backendless, 等等-),(译者:国内比较出名的有Bmob).但自己解

【重学Node.js 第1&2篇】本地搭建Node环境并起RESTful Api服务

本地搭建Node环境并起RESTful Api服务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://github.com/hellozhangran/happy-egg-server 说明:本想分两章讲环境搭建和起api服务,但操作下来确实过于简单.但考虑到整个系列的完整性也不能不讲,那就把这两篇合二为一吧 本地搭建Node环境 开发环境主要是指Node.MongoDB.本人是用的mac电脑,

笔记-Node.js中的核心API之HTTP

最近正在学习Node,在图书馆借了基本关于Node的书,同时在网上查阅资料,颇有收获,但是整体感觉对Node的理解还是停留在一个很模棱两可的状态.比如Node中的模块,平时练习就接触到那么几个,其他的一些模块暂时只会在学习的时候接触到,不常用便就荒废了.正所谓好记心不如烂笔头,多做笔记还是更有利于理解和记忆.自己做的总结也方便回头复习,所以决定踏上漫长的修炼之旅-- Node提供了许多API,其中一些比较重要.这些核心的API是所有Node应用的支柱,你会不停的用到他们. HTTP服务器 Nod

.NET程序员也学Node.js——初识Node.js

清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前端的开发技术,就让学习笔记来记录一下我的学习历程并同大家一起分享吧! 申明:我只是业余学着好玩的,顺便扩展一下视野,各位广大.NET同行不要被我带沟里去了,当然如果你想从事移动前端或者全栈开发的话还是有必要学习一下的. Node.js简介 Node.js 的推出,不仅从工程化的角度自动化掉更多琐碎费

基于Node的PetShop,RESTful API以及认证

由于宠物店的业务发展需要,我们需要一种更加便捷的方式来管理日益增多的宠物和客户.最好的方法就是开发一个APP,我可以用这个APP来添加.更新和删除宠物.同时,业务要给宠物店的会员用户有限查看某些宠物. 我们在开发中会用到NodeJs以及基于NodeJs的开发框架,如:Express,Mongoose(用来管理MongoDB的数据),Passport(认证)等工具. 开始 我们这个项目的结构大概是这样的: petshot/ //服务端和客户端(android) server/ //服务端 mode

利用node js快速模拟Web API

Web API即使通过网络进行调用的API接口,与具体的编程语言无关.现在常见的是通过标准的HTTP GET/POST请求,从服务器获取响应的资源或服务,服务器返回调用的结果内容,一般为xml格式或者json格式的数据(现在使用json的更多). 在开发App的时候,一般原型设计好(如使用just in mind之类的工具)之后,我们会设计出与服务器交互的接口文档.一般情况下,App的开发进度(尤其原型)要快于服务器的开发进度.在App静态原型开发完到服务器实现所有的交互接口这段期间内,我们当然

关于安装完Node.js 出现node is not dedined 问题

今天想来接触下Node.js 神奇  怀着揣揣的心 从官网下载了windows 的64位mis版本  几个下一步就顺利安装完毕了 接着跟着新手教程走  不懂教程里的 苹果shell 是什么 反正就是检测下node的安装么  输入node -v 那么问题就来了: 什么情况: 跟想象的不一样 各种node  node -v  node -version  都是这么个情况...无语 再一看 这界面 cmd也有  然后打开windows的cmd  ...果然.... 原来是这么个情况...

自学Node.js: WebStorm+Node.js开发环境的配置

WebStorm是作为JS开发IDE存在的,并且支持流行的Node.js以及JQuery等js框架.而Node.js简单说就是一个JS类库并且配备有Google的V8 js引擎来解析和执行js脚本. 那WebStorm+Node.js这样一个组合,用来开发基于Node.js平台的应用是最方便不过的了,并且可以知道WebStorm这个IDE环境对js的支持是灰常强大的,有智能提示.断点调试.查看源码等等功能. 类似其他开发环境的搭建,下面简要说一下如何搭建一个开发环境并完成一个Demo实例. 1.

【Node.js】Node.js的安装

Node.js的简介 简单的说,Node.js 是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好.‘ Node.js的下载 读者可以从Node.js的官方网站上下载https://nodejs.org Node.js的安装过程非常简单.安装完成后,运行node程序,输出