web-dev-qa-db-fra.com

ReferenceError: describe n'est pas défini

J'essaie de définir des points de terminaison et d'effectuer un test à l'aide de nodejs. Dans server.js j'ai:

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

et en func1.js:

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

Maintenant, dans test.js, j'essaie d'utiliser ce noeud final:

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

Mais quand je lance node test.js je reçois cette erreur:

 describe ('Compte', function () {
 ^ 

 ReferenceError: describe n'est pas défini 
 dans Object. (/test/test.js:9:1)
 dans Module._compile (module.js: 456: 26) 
 dans Object.Module._extensions..js (module.js: 474: 10) 
 dans Module.load (module.js: 356: 32) 
 at Function.Module._load (module.js: 312: 12) 
 at Function.Module.runMain (module.js: 497: 10) 
 au démarrage (node.js: 119: 16) 
 à node.js: 906: 3 

Comment puis-je résoudre le problème?

103
N34

En supposant que vous testez via mocha , vous devez exécuter vos tests à l'aide de la commande mocha au lieu de l'exécutable node.

Donc, si vous ne l'avez pas déjà fait, assurez-vous de faire npm install mocha -g. Ensuite, exécutez simplement mocha dans le répertoire racine de votre projet.

149
mscdex

Pour exécuter des tests avec node/npm sans installer Mocha globalement, procédez comme suit:

• Installer Mocha localement sur votre projet (npm install mocha --save-dev)

• installer éventuellement une bibliothèque d'assertion (npm install chai --save-dev)

• Dans votre package.json, ajoutez une section pour scripts et ciblez le binaire mocha.

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

• Placez vos fichiers de spécification dans un répertoire nommé /test dans votre répertoire racine.

• Dans vos fichiers de spécification, importez la bibliothèque d'assertion.

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

• Vous n'avez pas besoin d'importer du mocha, d'exécuter mocha.setup ou d'appeler mocha.run()

• Exécutez ensuite le script à partir de la racine de votre projet:

npm test
39
cantera

Vous pouvez aussi faire comme ça:

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

Référence: http://mochajs.org/#require

12
subhojit777

si vous utilisez vscode, voulez déboguer vos fichiers

J'ai déjà utilisé tdd avant, il jette ReferenceError: describe is not defined

Mais quand j'utilise bdd, ça marche!

perdre une demi-journée pour le résoudre ....

    {
      "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"
},
9
toffee

j'ai cette erreur en utilisant "--ui tdd". supprimez-le ou utilisez "--ui bdd" pour résoudre le problème.

1
GraySe7en

OP a demandé d'exécuter node et non pas mocha. C’est un cas d’utilisation très courant, voir Utilisation de Mocha par programmation

C’est ce que les injecteurs décrivent et cela dans mes tests.

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

J'ai essayé tdd comme dans la documentation, mais cela n'a pas fonctionné, mais bdd a fonctionné.

1
eighteyes

Utilisez n'importe quel framework de test Javascript pour l'exécuter

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

 enter image description here

 enter image description here

0
Prashanth Sams