3

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.

1 Answer 1

1

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.