ReferenceError: описать не определен NodeJs

Я пытаюсь определить некоторые конечные точки и выполнить тест, используя nodejs. В server.js у меня есть:

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

и в func1.js:

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

Теперь в test.js я пытаюсь использовать эту конечную точку:

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

Но когда я запускаю node test.js, я получаю эту ошибку:

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

Как я могу исправить проблему?

Ответ 1

Предполагая, что вы тестируете через mocha, вам нужно запустить свои тесты, используя команду mocha вместо исполняемого файла node.

Итак, если вы еще этого не сделали, убедитесь, что вы выполняете npm install mocha -g. Затем просто запустите mocha в корневом каталоге проекта.

Ответ 2

если вы используете vscode, хотите отладить ваши файлы

Я использовал tdd прежде, он бросает ReferenceError: describe is not defined

Но когда я использую bdd, это работает!

потратить полдня на ее решение....

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

Ответ 3

Чтобы выполнить тесты с помощью node/npm без установки Mocha глобально, вы можете сделать это:

• Установите Mocha локально в свой проект (npm install mocha --save-dev)

• При необходимости установите библиотеку утверждений (npm install chai --save-dev)

• В package.json добавьте раздел для scripts и укажите бинарный файл mocha

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

• Поместите свои файлы спецификаций в каталог с именем /test в корневой каталог

• В ваших файлах спецификаций импортируйте библиотеку утверждений

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

• Вам не нужно импортировать мокко, запустить mocha.setup или вызвать mocha.run()

• Затем запустите script из корня проекта:

npm test

Ответ 4

Вы также можете сделать следующее:

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

Ссылка: http://mochajs.org/#require

Ответ 5

OP задал вопрос о запуске от node не от mocha. Это очень распространенный случай использования, см. Использование Mocha Programatically

Это то, что инъецировали, описать и в мои тесты.

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

Я пробовал tdd как в документах, но это не сработало, bdd работал.

Ответ 6

У меня есть эта ошибка при использовании "--ui TDD". удалите это или используйте исправление "--ui bdd".

Ответ 7

Используйте любую среду тестирования Javascript для ее запуска

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

Ответ 9

Просто удалите каталог /dist и перекомпилируйте его. Это сработало для меня!