参考错误:describe未定义NodeJs

wnavrhmk  于 2023-05-17  发布在  Node.js
关注(0)|答案(9)|浏览(279)

我尝试定义一些端点,并使用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

如何解决此问题?

kjthegm6

kjthegm61#

假设您正在通过mocha进行测试,您必须使用mocha命令而不是node可执行文件来运行测试。
所以如果你还没有,请确保你做了npm install mocha -g。然后在项目的根目录下运行mocha

2w3rbyxf

2w3rbyxf2#

如果使用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"
},
hs1rzwqc

hs1rzwqc3#

要在不全局安装Mocha的情况下使用node/npm运行测试,可以这样做:
·将Mocha本地安装到项目(npm install mocha --save-dev
·可选安装Assert库(npm install chai --save-dev
·在您的package.json中,为scripts添加一个节,并将mocha二进制文件作为目标

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

·将spec文件放在根目录中名为/test的目录中
·在spec文件中,导入Assert库

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

·您不需要导入mocha、运行mocha.setup、调用mocha.run()
·然后从项目根目录运行脚本:

npm test
jvlzgdj9

jvlzgdj94#

你也可以这样做:

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

1wnzp6jl

1wnzp6jl5#

我有这个错误时使用“--ui TDD”.删除此或使用“--ui bdd”修复问题.

yvfmudvl

yvfmudvl6#

OP询问从node运行,而不是从mocha运行。这是一个非常常见的用例,请参见Using Mocha Programatically
这就是我在测试中注入的describe和it。

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

我尝试了tdd像在文档中,但没有工作,bdd工作虽然。

hlswsv35

hlswsv357#

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

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

9o685dep8#

  • 确保您有一个名为test的文件夹,其中包含您的test.js文件。
  • 另外,通过在terminal(在项目路径)中运行mocha -version,确保您的项目中有可用的mocha。
  • 确保您的项目有可用的package.json,如果没有,请运行npm init -y
  • 最后,要运行mocha测试脚本,请在终端(项目路径)上运行npm test
dddzy1tm

dddzy1tm9#

在我的例子中,这只是linter的问题,所以我在根文件夹中创建了一个文件,在本例中使用Chai

{
    "env": {
        "browser": true,
        "node": true,
        "chai": true
    }
}

相关问题