node.js - karma - typeerror: describe is not a function

ReferenceError: describe is not defined NodeJs (5)

I am trying to define some endpoints and do a test using nodejs . In server.js I have:

var express = require('express');
var func1 = require('./func1.js');
var port = 8080;
var server = express();

});'/testend/', func1.testend);

and in func1.js :

    var testend = function(req, res) {
           serialPort.write("1", function(err, results) {
           serialPort.write("2" + "\n", function(err, results) {
    exports.testend = testend;

Now in test.js I am trying to use this endpoint:

var should = require('should');
var assert = require('assert');
var request = require('supertest');
var http = require('http');
var app = require('./../server.js');
var port = 8080;

describe('Account', function() {
        var url = "http://localhost:" + port.toString();
        it('test starts', function(done) {
                // end handles the response
                .end(function(err, res) {
                        if (err) {
                                throw err;

But when I run node test.js I am getting this error:

describe('Account', function() {

ReferenceError: describe is not defined
    at Object. (/test/test.js:9:1)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3

How can I fix the issue?

Assuming you are testing via mocha , you have to run your tests using the mocha command instead of the node executable.

So if you haven't already, make sure you do npm install mocha -g . Then just run mocha in your project's root directory.

OP asked about running from node not from mocha . This is a very common use case, see Using Mocha Programatically

This is what injected describe and it into my tests.

mocha.ui('bdd').run(function (failures) {
    process.on('exit', function () {

I tried tdd like in the docs, but that didn't work, bdd worked though.

Use any Javascript testing framework to run it

npm install jest -g
jest ./**/**/demo.spec.js
npm install mocha -g
mocha ./**/**/demo.spec.js
npm install jasmine-node -g
jasmine-node ./**/**/demo.spec.js

You can also do like this:

  var mocha = require('mocha')
  var describe = mocha.describe
  var it =
  var assert = require('chai').assert

  describe('#indexOf()', function() {
    it('should return -1 when not present', function() {
      assert.equal([1,2,3].indexOf(4), -1)


if you are using vscode, want to debug your files

I used tdd before, it throw ReferenceError: describe is not defined

But, when I use bdd , it works!

waste half day to solve it....

      "type": "node",
      "request": "launch",
      "name": "Mocha Tests",
      "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
      "args": [
        "bdd",// set to bdd, not tdd
      "internalConsoleOptions": "openOnSessionStart"