Examples Using Mocha and Related Tools
In this tutorial we are going to look at live codes where mocha has can be used:
Mocha examples
//when testing with babel
import { equal } from "assert";
import { add } from "../src";
describe('Babel usage suite', () => {
it('it should add numbers correctly', () => {
equal(add(2, 3), 5);
});
});
//you can use mocha with karma
const expect = chai.expect;
describe('Array', function () {
describe('.push()', function () {
it('it should append a value', function () {
var arr = [];
arr.push('foo');
arr.push('bar');
expect(arr[0]).to.equal('foo');
expect(arr[1]).to.equal('bar');
})
it('it should return the length', function () {
var arr = [];
var n = arr.push('foo');
expect(n).to.equal(1);
n = arr.push('bar');
expect(n).to.equal(2);
})
describe('with many arguments', function () {
it('it should add the values', function () {
var arr = [];
arr.push('foo', 'bar');
expect(arr[0]).to.equal('foo');
expect(arr[1]).to.equal('bar');
})
})
})
describe('.unshift()', function () {
it('it should prepend a value', function () {
var arr = [1, 2, 3];
arr.unshift('foo');
expect(arr[0]).to.equal('foo');
expect(arr[1]).to.equal(1);
})
it('it should return the length', function () {
var arr = [];
var n = arr.unshift('foo');
expect(n).to.equal(1);
n = arr.unshift('bar');
expect(n).to.equal(2);
})
describe('with many arguments', function () {
it('it should add the values', function () {
var arr = [];
arr.unshift('foo', 'bar');
expect(arr[0]).to.equal('foo');
expect(arr[1]).to.equal('bar');
})
})
})
describe('.pop()', function () {
it('it should remove and return the last value', function () {
var arr = [1, 2, 3];
expect(arr.pop()).to.equal(3);
expect(arr.pop()).to.equal(2);
expect(arr).to.have.length(1);
})
})
describe('.shift()', function () {
it('it should remove and return the first value', function () {
var arr = [1, 2, 3];
expect(arr.shift()).to.equal(1);
expect(arr.shift()).to.equal(2);
expect(arr).to.have.length(1);
})
})
})
Express examples
//testing a res.status
var express = require('../')
, request = require('supertest');
describe('res', function(){
describe('.status(code)', function(){
it('it should set the response .statusCode', function(done){
var app = express();
app.use(function(req, res){
res.status(201).end('Created');
});
request(app)
.get('/')
.expect('Created')
.expect(201, done);
})
})
})
Connect examples
//testing an app.listen
var assert = require('assert')
var connect = require('..');
var request = require('supertest');
describe('app.listen()', function(){
it('it should wrap in an http.Server', function(done){
var app = connect();
app.use(function(req, res){
res.end();
});
var server = app.listen(0, function () {
assert.ok(server)
request(server)
.get('/')
.expect(200, function (err) {
server.close(function () {
done(err)
})
})
});
});
});
SuperAgent examples
//form testing
'use strict';
const request = require('../support/client');
const setup = require('../support/setup');
const base = setup.uri;
const assert = require('assert');
describe('Merging objects', () => {
it("Do not mix JSON and Buffer", () => {
assert.throws(() => {
request
.post('/echo')
.send(Buffer.from('some buffer'))
.send({ allowed: false });
});
});
});
describe('req.send(String)', () => {
it('it should default to "form"', done => {
request
.post(`${base}/echo`)
.send('user[name]=tj')
.send('user[email][email protected]')
.end((err, res) => {
res.header['content-type'].should.equal(
'application/x-www-form-urlencoded'
);
res.body.should.eql({
user: { name: 'tj', email: '[email protected]' }
});
done();
});
});
});
describe('res.body', () => {
describe('application/x-www-form-urlencoded', () => {
it('it should parse the body', done => {
request.get(`${base}/form-data`).end((err, res) => {
res.text.should.equal('pet[name]=manny');
res.body.should.eql({ pet: { name: 'manny' } });
done();
});
});
});
});
WebSocket.io
//test for a websocket
/**
* Test dependencies.
*/
var ws = require('../lib/websocket.io')
, http = require('http')
/**
* Tests.
*/
describe('websocket.io', function () {
it('must expose version number', function () {
ws.version.should.match(/[0-9]+\.[0-9]+\.[0-9]+/);
});
it('has to expose public constructors', function () {
ws.Socket.should.be.a('function');
ws.Server.should.be.a('function');
ws.protocols.drafts.should.be.a('function');
ws.protocols['7'].should.be.a('function');
ws.protocols['8'].should.be.a('function');
ws.protocols['13'].should.be.a('function');
});
it('must connect', function (done) {
listen(function (addr, server) {
var cl = client(addr);
cl.on('open', function () {
cl.close();
server.close();
done();
});
});
});
it('has to handle upgrade requests of a normal http server', function (done) {
var httpServer = http.createServer(function (req, res) {
res.writeHead(200);
res.end('Hello World');
})
var server = ws.attach(httpServer);
httpServer.listen(function (err) {
if (err) throw err;
var addr = httpServer.address();
http.get({ host: addr.address, port: addr.port }, function (res) {
res.on('data', function (data) {
data.toString().should.equal('Hello World');
var cl = client(addr);
cl.on('open', function () {
cl.close();
httpServer.close();
done();
});
});
});
});
});
it('has to listen on a port', function (done) {
var server = ws.listen(null, function () {
var addr = server.httpServer.address();
http.get({ host: addr.address, port: addr.port }, function (res) {
res.statusCode.should.equal(501);
res.on('data', function (data) {
data.toString().should.equal('Not Implemented');
var cl = client(addr);
cl.on('open', function () {
cl.close();
server.httpServer.close();
done();
});
});
});
});
});
});
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/mocha/examples-using-mocha.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics