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 wellconst mockRouter = require('./routes/mock'); app.use('/mock', mockRouter);
// routers/mock.jsconst 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.jsconst 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(); }); });});