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]()
Ответ 8
Проверьте это, это сработало для меня
https://gist.github.com/soheilhy/867f76feea7cab4f8a84
Ответ 9
Просто удалите каталог /dist и перекомпилируйте его. Это сработало для меня!