ReferenceError: describe non è definito NodeJs

Sto provando a definire alcuni endpoint e faccio un test usando nodejs . In server.js ho:

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

e in func1.js :

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

Ora in test.js sto cercando di usare questo 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(); }); }); }); 

Ma quando node test.js sto ricevendo questo errore:

 descrivere ('Account', function () {
 ^

 ReferenceError: describe non è definito
     all'object.  (/test/test.js:9:1)
     a Module._compile (module.js: 456: 26)
     su Object.Module._extensions..js (module.js: 474: 10)
     a Module.load (module.js: 356: 32)
     su Function.Module._load (module.js: 312: 12)
     su Function.Module.runMain (module.js: 497: 10)
     all'avvio (node.js: 119: 16)
     at node.js: 906: 3

Come posso risolvere il problema?

Supponendo che tu stia testando tramite mocha , devi eseguire i tuoi test usando il comando mocha invece dell’eseguibile del node .

Quindi, se non lo hai già fatto, assicurati di npm install mocha -g . Quindi esegui mocha nella directory principale del tuo progetto.

Per eseguire test con nodo / npm senza installare Mocha a livello globale, puoi fare ciò:

• Installa Mocha localmente sul tuo progetto ( npm install mocha --save-dev )

• Opzionalmente installa una libreria di assertion ( npm install chai --save-dev )

• Nel package.json , aggiungi una sezione per gli scripts e scegli come target il file binario della moka

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

• Metti i tuoi file spec in una directory chiamata /test nella tua directory root

• Nei file spec, importare la libreria di assertion

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

Non è necessario importare mocha, eseguire mocha.setup o chiamare mocha.run()

• Quindi esegui lo script dalla root del progetto:

 npm test 

Puoi anche fare così:

  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) }) }) 

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

OP ha chiesto di eseguire dal node non da mocha . Questo è un caso d’uso molto comune, vedi Uso di Mocha a livello di programmazione

Questo è ciò che viene descritto per iniezione e nei miei test.

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

Ho provato tdd come nei documenti, ma quello non ha funzionato, bdd ha funzionato comunque.