3

I am new to Mocha. Can someone suggest how to write test case for "retrieveEmployee" function.

var mysql = require('mysql');

var dbconfig = {
    host:'localhost',
    user:'root',
    password:'root',
    database:'db',
    port:'3306'
};

exports.retrieveEmployee = function(req, res){
      var connection = mysql.createConnection(dbconfig);
      var query ='SELECT emp_Id, emp_Name FROM employee';
      connection.query(query, function(err, rows, fields){
        if(err) 
            throw err;
        res.render('index', { title: 'Employee', 'items':rows });    
      });
};

I am using 'MySql' for database.

Sivakumar
  • 305
  • 1
  • 12

1 Answers1

1

If your intent is to assert page renderings/functionality I'd use something like Zombie.

Ex:

app.js

app.get("/", function(req, res, next) {
  res.render("index", {title: 'Hello World!'});
});

test/app.js

var Browser = require('zombie');
var app = require('../app');

describe("a html endpoin", function() {
  var server;
  beforeEach(function(done) {
    server = app.listen(7331, done);
  });

  afterEach(function(done) {
    server.close(done);
  });

  it("has some title", function(done) {
    var browser = new Browser();
    browser.visit("http://localhost:7331/")
      .then(function() {
        var title = browser.text('title');
        assert.equal(title, 'Hello World!');
        done();
      });
  });
});

If your intent is more of an API endpoint, then something like supertest would work nicely.

Ex:

app.js

app.get("/api", function(req, res, next) {
  res.send({foo: 'bar'});
});

test/app.js

var request = require('supertest');
var app = require('../app');

describe("an api endpoint", function() {
  it("returns some sort of json", function(done) {
    request(app)
      .get("/api")
      .expect(200, {foo: 'bar'}, done);
  });
});

However, both Zombie or supertest can be used to do both of these tasks.

Use the assertion library of your choice.

nowk
  • 31,614
  • 2
  • 32
  • 40