Я пытаюсь определить некоторые конечные точки и сделать тест, используя 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
я получаю эту ошибку:
описать («Аккаунт», функция () { ^ ReferenceError: описание не определено на объекте. (/Test/test.js:9:1) в Module._compile (module.js: 456: 26) в Object.Module._extensions..js (module.js: 474: 10) в Module.load (module.js: 356: 32) в Function.Module._load (module.js: 312: 12) в Function.Module.runMain (module.js: 497: 10) при запуске (node.js: 119: 16) в node.js: 906: 3
Как я могу исправить проблему?
describe()
быть и где это определяется? При просмотре вашего файла test.js, там нет символаdescribe
, который там определяется.Ответы:
Предполагая, что вы тестируете через
mocha
, вы должны запускать свои тесты, используяmocha
команду вместоnode
исполняемого файла.Так что, если вы еще этого не сделали, убедитесь, что вы делаете
npm install mocha -g
. Затем просто запуститеmocha
в корневом каталоге вашего проекта.источник
"test": "./node_modules/.bin/mocha -V"
в скриптах раздел package.json и установите mocha как еще одну зависимость./node_modules/.bin
, этот путь уже загружен, когда вы используетеnpm run
илиyarn
, так что просто «test»: достаточно «mocha -V»mocha -V
не ясно, был ли он загружен из глобального или локального, поэтому я все еще предпочитаю показывать путь, даже если он не требуется системойесли вы используете vscode, хотите отладить ваши файлы
Я использовал
tdd
раньше, это броситьReferenceError: describe is not defined
Но, когда я использую
bdd
, это работает!потратить полдня на ее решение ....
источник
Чтобы запустить тесты с узлом / npm без глобальной установки Mocha, вы можете сделать это:
• Установите Mocha локально для вашего проекта (
npm install mocha --save-dev
)• При желании установить библиотеку утверждений (
npm install chai --save-dev
)• В вашем
package.json
, добавьте раздел дляscripts
и нацелить бинарный файл мокко• Поместите ваши файлы спецификаций в каталог с именем
/test
в вашем корневом каталоге• В ваших spec-файлах импортируйте библиотеку утверждений
• Вам не нужно импортировать мокко, запустить
mocha.setup
или позвонитьmocha.run()
• Затем запустите скрипт из корня вашего проекта:
источник
mocha
, она будет работать.mocha --recursive
{"scripts": { "test": "node ./node_modules/mocha/bin/mocha --recursive test" }}
Вы также можете сделать так:
Ссылка: http://mochajs.org/#require
источник
var mocha = require('mocha') var describe = mocha.describe var it = mocha.it
это на самом деле избыточно. Вы можетеvar {describe, it} = require('mocha')
с ES6 деструктурирующим назначениему меня есть эта ошибка при использовании "--ui TDD". удалите это или используйте "--ui BDD" исправить проблему.
источник
ОП спросил о том, что убегал
node
не изmocha
. Это очень распространенный вариант использования, см. Использование Мокко ПрограммноЭто то, что впрыснуло описание и это в мои тесты.
Я пытался
tdd
как в документах, но это не сработало, хотя BDD работал.источник
describe
он доступен только с BDD и недоступен для «TDD», каким-то образом в сценарии установки я использовал TDD и продолжал думать, что я настроил его как «BDD». Поиск в интернете не помогает, так как мое мнение таково, что я сделал правильную настройку (BDD), но все равно получаю ошибку. Это только ваше решение (которое уникально среди других решений, найденных в результатах поиска в Интернете), заставило меня добавить дополнительный код, который переопределил мои неправильные настройки и, наконец, сработал. Это только во время другой настройки конфигурации, я видел мою опечатку и после исправления его до «BDD», приведенный выше код не требовался.