রেফারেন্স এরিয়ার: বর্ণনাটি নোডজেগুলি সংজ্ঞায়িত করা হয়নি


160

আমি কিছু শেষবিন্দু সংজ্ঞায়িত করার চেষ্টা করছি এবং ব্যবহার করে একটি পরীক্ষা করব 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এই ত্রুটিটি পাচ্ছি:

বর্ণনা ('অ্যাকাউন্ট', ফাংশন () {
^

রেফারেন্সএরর: বর্ণনা সংজ্ঞায়িত হয় না
    অবজেক্ট এ। (/Test/test.js:9:1)
    Module._compile এ (মডিউল.জেএস: 456: 26)
    অবজেক্ট.মডিউল._ এক্সটেনশন..জেএস (মডিউল.জেএস: 474: 10)
    মডিউল.লোডে (মডিউল.জেএস: 356: 32)
    ফাংশন.মডিউল.এলডে (মডিউল.জেএস: 312: 12)
    ফাংশন.মডিউল.আরুনমাইন (মডিউল.জেএস: 497: 10)
    শুরুতে (নোড.জেএস: 119: 16)
    নোড.জেএস: 906: 3 এ

আমি কীভাবে সমস্যাটি সমাধান করতে পারি?


1
আপনি কী describe()হতে আশা করেন এবং এটি সংজ্ঞায়িত কোথায়? আপনার test.js ফাইলটি দেখার জন্য, কোনও সংকেত নেই describeযা সেখানে সংজ্ঞায়িত করা হচ্ছে।
jender00

1
বর্ণনা () জেসমিনের অংশ।
কিথ টাইলার

1
এই প্রশ্নটির দিকে পরিচালিত ডকুমেন্টেশনের ব্যবধানটি ২০১ 2016 সালের নভেম্বরে স্থির করা হয়েছিল , তবে সম্ভবত এটি সম্প্রতি সংস্করণ ৪.১.০ প্রকাশের সাথে ওয়েবসাইটে তৈরি করেছে।
ডিভাস

উত্তর:


197

ধরে নিই যে আপনি এর মাধ্যমে mochaপরীক্ষা করছেন, আপনার mochaপরিবর্তে কমান্ডটি ব্যবহার করে আপনার পরীক্ষা চালাতে হবে runnode এক্সিকিউটিভের ।

সুতরাং আপনার যদি ইতিমধ্যে না থাকে তবে নিশ্চিত হয়ে নিন যে আপনি এটি করছেন npm install mocha -g। তারপরে mochaআপনার প্রকল্পের মূল ডিরেক্টরিটি চালান ।


16
যদি আমি মোচা ফাংশনগুলি নোডে উপলব্ধ করতে চাই তবে কী হবে?
abhisekp

12
Mochajs.org এ মোচা ডকস এককভাবে এটি উল্লেখ করতে ব্যর্থ ...
রিচার্ড ইভ

3
গ্লোবাল মোচা ইনস্টল করার দরকার নেই, কেবল "test": "./node_modules/.bin/mocha -V"প্যাকেজ.জসনের স্ক্রিপ্ট বিভাগে ব্যবহার করুন এবং আরও একটি নির্ভরতা হিসাবে মোচা ইনস্টল করুন
লুকাশ লিসিস

2
@ লুকাসলিজের প্রয়োজন নেই ./node_modules/.bin, আপনি যখন ব্যবহার করবেন তখন এই পথটি ইতিমধ্যে লোড হয়ে গেছে npm runবা yarn, সুতরাং "পরীক্ষা": "মোচা-ভি" যথেষ্ট হবে
ফিলিপ সাবিনো

@ ফিলিপস্যাবিনো এটি দেখানোর জন্য ধন্যবাদ তবে আপনার যখন mocha -Vএটি ঠিক আছে এটি বিশ্বব্যাপী বা স্থানীয় থেকে বোঝা হয়েছিল কিনা তা পরিষ্কার নয় যে কারণে আমি এখনও সিস্টেমটির প্রয়োজন না হলেও পথ দেখাতে পছন্দ করি
লুকাশ লিসিস

132

আপনি যদি 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"
},

কি দারুন! সমস্যাটি সমাধান করার পরে এটি দেখছি।
ননব্রাইটো

ধন্যবাদ! আমাকে অনেক সময় বাঁচিয়েছে!
ব্র্যাড ডাব্লু

এটি ওয়েবস্টোরমের ক্ষেত্রেও সত্য (যা আশ্চর্যজনক)
ইয়েনসুন

4
উত্তরের জন্য ধন্যবাদ, সবকিছু কাজ করে !! কিভাবে এই কাজ করে? কীভাবে টিডিডি বিডি তে পরিবর্তন করা সমস্যার সমাধান করে?
TedTran2019

6
বিডিডি বনাম টিডিডি হ'ল 'টেস্ট স্টাইল' কমান্ড আর্গুমেন্টের মাধ্যমে মোচায় প্রেরণ, বিডিডি ডিফল্ট, তবে ভিএসকোড উত্পন্ন টেম্পলেটটি টিডিডি ব্যবহার করে। আপনি সম্ভবত বিডিডি ব্যবহার করছেন, কারণ বেশিরভাগ শুরু করা গাইড বিডিডি ব্যবহার করেন। কেন vscode টিডিডিটিকে ডিফল্ট হিসাবে ব্যবহার করে, যখন বিডিডি ডিফল্ট হয়, আমার বাইরে beyond
রায়ান দি লিচ

47

বিশ্বজুড়ে মোচা ইনস্টল না করে নোড / এনপিএম দিয়ে পরীক্ষা চালাতে, আপনি এটি করতে পারেন:

Project আপনার প্রকল্পে স্থানীয়ভাবে মোচা ইনস্টল করুন ( npm install mocha --save-dev)

Ption allyচ্ছিকভাবে একটি দৃ library় গ্রন্থাগার ইনস্টল করুন ( npm install chai --save-dev)

Your আপনার মধ্যে package.json, একটি বিভাগ যুক্ত করুন scriptsএবং মোচা বাইনারিটিকে লক্ষ্য করুন

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

Spec আপনার স্পষ্ট ফাইলগুলি /testআপনার মূল ডিরেক্টরিতে নামক ডিরেক্টরিতে রেখে দিন

Spec আপনার নির্দিষ্ট ফাইলে, দৃser় পাঠাগারটি আমদানি করুন

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

আপনার মোচা, রান mocha.setup, বা কল আমদানি করার দরকার নেইmocha.run()

• তারপরে আপনার প্রকল্পের মূল থেকে স্ক্রিপ্টটি চালান:

npm test

7
আপনার পরীক্ষার লাইনে, আপনাকে আর মোচা বিন ফোল্ডারের দিকে নির্দেশ করতে হবে না, কেবল লিখুন mocha, এটি কাজ করবে।
অ্যাড্রিয়ান লিঞ্চ

1
আপনি যদি সাব-ডিরেক্টরি সহ '/ পরীক্ষা' ডিরেক্টরিতে সমস্ত পরীক্ষা চালানোর জন্য এই আদেশটি চান, তবে রাখুনmocha --recursive
লুক গ্যালিয়নি

1
@ অ্যাড্রিয়ানলিঞ্চ: দু'বছর হয়ে গেছে, তবে কিছু আলাদা বা পরিবর্তিত হয়েছে। কোনও বিগ নেই, তবে এটি কারও সাহায্য করবে। আমি উইন্ডোজ 10 এ মোচা 4.01 বিশ্বব্যাপী ইনস্টল করেছি। আমাকে মোচা \ বিন \ মোচা করতে হবে, যেমন ক্যান্টেরার নোটটি বলেছে।
বাল্ডএগল 21

আমার কাজ করার জন্য আমাকে টার্গেট ফোল্ডারটি এতে অন্তর্ভুক্ত করতে হয়েছিল:{"scripts": { "test": "node ./node_modules/mocha/bin/mocha --recursive test" }}
আলউইন ক্যাসলার

21

আপনি এটির মতোও করতে পারেন:

  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/# অনুরোধ


রেফ থেকে> প্রয়োজনীয় ইন্টারফেসটি এক্সিকিউটেবল নোডের মাধ্যমে চালানো যায় না এবং অবশ্যই তাকে মোচা দিয়ে চালানো উচিত। প্রশ্নটি নোডের মাধ্যমে চলমান সম্পর্কে জিজ্ঞাসা করছে।
আইটিয়েজ

1
আমি পরে লিখছি এবং বিভিন্ন অভিজ্ঞতা আছে। যদি এটি কাউকে সহায়তা করে ... আমি উইন্ডোজ 10 এ মোচা 4.01 এবং চই 4.1.2 বিশ্বব্যাপী ইনস্টল করেছি। আমার এখানে প্রথম তিনটি ভেরিয়েবলের দরকার নেই; আমার চতুর্থ দরকার @ উইটইয়েজস: সরাসরি মোচা কীভাবে চালাবেন তা আমি খুঁজে পাইনি। আমি "নোড <মোচা \ বিন \ মোচা> <ফাইলের পরীক্ষার আপেক্ষিক পথ>" এর পুরো পথ দিয়ে চলেছি।
বাল্ডইগল 21

1
var mocha = require('mocha') var describe = mocha.describe var it = mocha.itএটি আসলে অপ্রয়োজনীয়। আপনি var {describe, it} = require('mocha')ES6 ডেস্ট্রাকচারিং অ্যাসাইনমেন্ট
user5532169

6

"--ui tdd" ব্যবহার করার সময় আমার এই ত্রুটি রয়েছে। এটি মুছে ফেলুন বা "--ui বিডিডি" সমস্যা সমাধান করুন।


5

nodeনা থেকে চালানোর বিষয়ে জিজ্ঞাসা করলেন ওপি mocha। এটি একটি খুব সাধারণ ব্যবহারের কেস, মোচা ব্যবহারিকভাবে ব্যবহার দেখুন

ইঞ্জেক্ট এটিই বর্ণনা করে এবং এটি আমার পরীক্ষাগুলিতে।

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

আমি tddডক্সের মতো চেষ্টা করেছি , তবে এটি কার্যকর হয়নি, বিডি যদিও কাজ করেছে।


আপনাকে অনেক ধন্যবাদ! যদিও আমি সচেতন যে describeকেবল বিডিডি সহ উপলব্ধ এবং এটি 'টিডিডি'র জন্য উপলভ্য নয়, কোনওভাবে সেটআপ স্ক্রিপ্টে, আমি টিডিডি ব্যবহার করেছি এবং ভাবছি যে আমি' বিডিডি 'হিসাবে কনফিগার করেছি। ইন্টারনেট অনুসন্ধান কোনও উপকারে আসে না, কারণ আমার ধারণাটি ছিল যে, আমি সঠিক সেটআপ (বিডিডি) করেছি, তবুও আমি ত্রুটি পেয়েছি। এটি কেবলমাত্র আপনার সমাধান, (যা ইন্টারনেট অনুসন্ধানের ফলাফলগুলিতে পাওয়া অন্য কোনও সমাধান থেকে স্বতন্ত্র) আমাকে অতিরিক্ত কোড যুক্ত করে যা আমার ভুল সেটিংসকে ছাড়িয়ে যায় এবং শেষ পর্যন্ত কাজ করে। এটি কেবলমাত্র অন্যান্য কনফিগারেশন সেটআপের সময়, আমার টাইপগুলি দেখেছিলাম এবং এটি 'বিডিডি'-তে সংশোধন করার পরে, উপরের কোডের প্রয়োজন হয়নি।
ভানাগাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.