ReferenceError: describe is not defined NodeJs

匿名 (未验证) 提交于 2019-12-03 02:56:01

问题:

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?

回答1:

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.



回答2:

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

npm install mocha --save-dev)

npm install chai --save-dev)

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

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

/test in your root directory

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

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

npm test 


回答3:

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



回答4:

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.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!