ReferenceError: describe is not defined NodeJs

node.jsRestTesting

node.js Problem Overview


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();

server.configure(function(){
  server.use(express.bodyParser());
});

server.post('/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) {
                request(url).post('/testend/')
                // end handles the response
                .end(function(err, res) {
                        if (err) {
                                throw err;
                        }
                        res.body.error.should.type('string');
                        done();
                });
        });
});

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?

node.js Solutions


Solution 1 - node.js

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.

Solution 2 - node.js

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": [
        "-u",
        "bdd",// set to bdd, not tdd
        "--timeout",
        "999999",
        "--colors",
        "${workspaceFolder}/test/**/*.js"
      ],
      "internalConsoleOptions": "openOnSessionStart"
},

Solution 3 - node.js

To run tests with node/npm without installing Mocha globally, you can do this:

• Install Mocha locally to your project (npm install mocha --save-dev)

• Optionally install an assertion library (npm install chai --save-dev)

• In your package.json, add a section for scripts and target the mocha binary

"scripts": {
  "test": "node ./node_modules/mocha/bin/mocha"
}

• Put your spec files in a directory named /test in your root directory

• In your spec files, import the assertion library

var expect = require('chai').expect;

• You don't need to import mocha, run mocha.setup, or call mocha.run()

• Then run the script from your project root:

npm test

Solution 4 - node.js

You can also do like this:

  var mocha = require('mocha')
  var describe = mocha.describe
  var it = mocha.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)
    })
  })

Reference: http://mochajs.org/#require

Solution 5 - node.js

i have this error when using "--ui tdd". remove this or using "--ui bdd" fix problem.

Solution 6 - node.js

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 () {
      process.exit(failures);
    });
  });

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

Solution 7 - node.js

  • Make sure you have a folder named as test that contains your test.js file.
  • Also make sure you have mocha available in your project by running mocha -version in terminal (at project path)
  • Make sure your project has package.json available, if not run npm init -y
  • And finally to run mocha test scripts, on terminal (on project path) run npm test

Solution 8 - node.js

for Jest you have to add "jest": true to .eslintrc

{
  "env": {
    "browser": true,
    "es6": true,
    "jest": true
  },
...

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionN34View Question on Stackoverflow
Solution 1 - node.jsmscdexView Answer on Stackoverflow
Solution 2 - node.jsnuclearView Answer on Stackoverflow
Solution 3 - node.jscanteraView Answer on Stackoverflow
Solution 4 - node.jssubhojit777View Answer on Stackoverflow
Solution 5 - node.jsGraySe7enView Answer on Stackoverflow
Solution 6 - node.jseighteyesView Answer on Stackoverflow
Solution 7 - node.jsSidrah Madiha SiddiquiView Answer on Stackoverflow
Solution 8 - node.jsDmitry GrinkoView Answer on Stackoverflow