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?
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 forscripts
and target the mocha binary• Put your spec files in a directory named
/test
in your root directory• In your spec files, import the assertion library
• You don't need to import mocha, run
mocha.setup
, or callmocha.run()
• Then run the script from your project root:
You can also do like this:
Reference: http://mochajs.org/#require
OP asked about running from
node
not frommocha
. This is a very common use case, see Using Mocha ProgramaticallyThis is what injected describe and it into my tests.
I tried
tdd
like in the docs, but that didn't work, bdd worked though.Assuming you are testing via
mocha
, you have to run your tests using themocha
command instead of thenode
executable.So if you haven't already, make sure you do
npm install mocha -g
. Then just runmocha
in your project's root directory.