ReferenceError: description没有定义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

我该如何解决这个问题?

239501 次浏览

假设你正在通过mocha进行测试,你必须使用mocha命令而不是node可执行文件来运行测试。

所以如果你还没有,确保你做了npm install mocha -g。然后在项目的根目录下运行mocha

使用node/npm运行测试而不全局安装Mocha,你可以这样做:

在你的项目中安装Mocha (npm install mocha --save-dev)

•可选地安装断言库(npm install chai --save-dev)

•在你的package.json中,为scripts添加一个部分,并瞄准摩卡二进制

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

•将你的规范文件放在根目录下名为/test的目录中

•在规范文件中,导入断言库

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

•你需要导入摩卡,运行mocha.setup,或调用mocha.run()

•然后从项目根目录运行脚本:

npm test

你也可以这样做:

  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

OP询问从node运行而不是从mocha运行。这是一个非常常见的用例,参见程序化使用Mocha

这就是我在测试中注入的描述。

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

我尝试了tdd像在文档,但这并不工作,bdd工作。

如果你正在使用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"
},

我有这个错误时使用“——ui tdd”。 删除这个或使用"——ui bdd"修复问题

  • 确保你有一个名为test的文件夹,其中包含你的test.js文件。
  • 在终端中运行mocha -version(在项目路径下),确保项目中有mocha可用。
  • 确保你的项目有软件包。如果没有,运行npm init -y
  • 最后运行mocha测试脚本,在终端(在项目路径上)运行npm test

对于Jest,你必须将"jest": true添加到.eslintrc

{
"env": {
"browser": true,
"es6": true,
"jest": true
},
...