Richard
Richard

Reputation: 65530

Getting started with unit testing JavaScript without a framework

I am building a JavaScript application (no framework yet, but I may move it to Backbone). I have created various classes, here's an example, chart.js:

var moment = require('moment');
var chart = {
  ...
  getAllMonths: function(firstMonth, lastMonth) {
    var startDate = moment(firstMonth);
    var endDate = moment(lastMonth);
    var monthRange = [];
    while (startDate.isBefore(endDate)) {
        monthRange.push(startDate.format("YYYY-MM-01"));
        startDate.add(1, 'month');
    }
    return monthRange;
  },
  setMonths: function() { 
    // get data via ajax
    this.globalOptions.months = this.getAllMonths(data['firstMonth'], data['lastMonth']);

  }
};
module.exports = chart;

My file structure is as follows:

index.js
src/
  chart.js
  form.js

I import the two classes into index.js and use browserify to bundle these scripts up in order to use them in my web app.

Now I want to add tests for chart.js and form.js. I have added a new directory called test/ and empty test files:

index.js
src/
  chart.js
  form.js
test/
  test_chart.js
  test_form.js

My question now is what test_chart.js should look like in order to test the getAllMonths function, and what test runner I should use.

I've started experimenting with the following in test_chart.js:

console.log('hello world'); 
var chart = require('../src/chart');
var months = chart.getAllMonths('2014-02-01', '2015-03-01');
// assert if months.length != 14

But if I run this with node test/test_chart.js, I get errors about failed module imports for moment etc (shouldn't these be imported automatically with the original chart.js module?).

Secondly, what test runner could I use for this kind of simple testing? I'd like something that will automatically run everything in the test directory, and offers asserts etc.

Upvotes: 3

Views: 1580

Answers (1)

Richard
Richard

Reputation: 65530

I ended up using Mocha. It's really pretty easy:

npm install --save-dev mocha
mocha

Boom!

It automatically looks for files in the test/ folder.

Still having the problem with imports though.

Upvotes: 1

Related Questions