web-dev-qa-db-ja.com

ReferenceError:describeは定義されていません

いくつかのエンドポイントを定義して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(){
 ^ 
 
参照エラー:describeはObjectで定義されていません
。 .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)
 at Function.Module.runMain(module) js:497:10)
起動時(node.js:119:16)
 node.js:906:3 

どうすれば問題を解決できますか?

110
N34

mocha でテストしているとすると、実行可能ファイルmochaの代わりにnodeコマンドを使用してテストを実行する必要があります。

ですから、まだ行っていなければ、必ずnpm install mocha -gを実行してください。その後、プロジェクトのルートディレクトリでmochaを実行してください。

159
mscdex

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という名前のディレクトリにspecファイルを配置します

•specファイルで、アサーションライブラリをインポートします

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

しない mochaをインポートするか、mocha.setupを実行するか、mocha.run()を呼び出す必要があります

•次に、プロジェクトルートからスクリプトを実行します。

npm test
41
cantera

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"
},
17
toffee

次のようにすることもできます。

  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

16
subhojit777

OPはnodeからではなくmochaからの実行について質問しました。これは非常に一般的な使用例です。 Mochaをプログラム的に使用する を参照してください。

これが記述されたものであり、それを私のテストに取り入れました。

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

私はドキュメントのようにtddを試しましたが、それはうまくいきませんでした、bddはうまくいきました。

2
eighteyes

「--ui tdd」を使用するとこのエラーが発生します。これを削除するか、「-ui bdd」を使用して問題を修正します。

1
GraySe7en

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

0
Prashanth Sams