簡體   English   中英

ReferenceError:describe 未定義 NodeJs

[英]ReferenceError: describe is not defined 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

我該如何解決這個問題?

假設您正在通過mocha進行測試,您必須使用mocha命令而不是node可執行文件來運行您的測試。

因此,如果您還沒有,請確保您執行npm install mocha -g 然后只需在項目的根目錄中運行mocha

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

要在不全局安裝 Mocha 的情況下使用 node/npm 運行測試,您可以執行以下操作:

• 在您的項目本地安裝 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()

• 然后從您的項目根目錄運行腳本:

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

使用“--ui tdd”時出現此錯誤。 刪除此或使用“--ui bdd”修復問題。

OP 詢問從node運行而不是從mocha運行。 這是一個非常常見的用例,請參閱以編程方式使用 Mocha

這就是將描述和它注入到我的測試中的內容。

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

我像在文檔中一樣嘗試了tdd ,但這不起作用,但 bdd 起作用了。

使用任何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

在此處輸入圖片說明

在此處輸入圖片說明

  • 確保您有一個名為test的文件夾,其中包含您的test.js文件。
  • 還要通過在終端中運行mocha -version (在項目路徑中)確保您的項目中有 mocha 可用
  • 確保你的項目有 package.json 可用,如果沒有運行npm init -y
  • 最后運行 mocha 測試腳本,在終端(在項目路徑上)運行npm test

只需刪除/ dist目錄並重新編譯即可。 這對我有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM