मैं समझने की कोशिश कर रहा हूं कि स्टैंड-अलोन जावास्क्रिप्ट कोड कैसे विकसित किया जाए। मैं कमांड लाइन से चल रहे परीक्षण और मॉड्यूल के साथ जावास्क्रिप्ट कोड लिखना चाहता हूं। तो मैंने पुस्तकालयों requirejs
, underscore
, और mocha
के साथ node.js
और npm
स्थापित किया है।RequJS के साथ मोचा परीक्षण चलाते समय मुझे "परिभाषित परिभाषित नहीं किया गया" क्यों दिखाई देता है?
मेरे निर्देशिका संरचना इस तरह दिखता है:
> tree .
.
├── node_modules
├── src
│ └── utils.js
└── test
└── utils.js
जहां src/utils.js
एक छोटे से मॉड्यूल है कि मैं, लिख रहा हूँ निम्न कोड के साथ है:
> cat src/utils.js
define(['underscore'], function() {
"use strict";
if ('function' !== typeof Object.beget) {
Object.beget = function (o) {
var f = function() {
};
f.prototype = o;
return new f();
};
}
});
और test/utils.js
परीक्षा है
> cat test/utils.js
var requirejs = require('requirejs');
requirejs.config({nodeRequire: require});
requirejs(['../src/utils'], function(utils) {
suite('utils', function() {
test('should always work', function() {
assert.equal(1, 1);
})
})
});
जो मैं तब शीर्ष स्तर निर्देशिका से चलाने की कोशिश करता हूं (
> mocha
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Calling node's require("../src/utils") failed with error: ReferenceError: define is not defined
at /.../node_modules/requirejs/bin/r.js:2276:27
at Function.execCb (/.../node_modules/requirejs/bin/r.js:1872:25)
at execManager (/.../node_modules/requirejs/bin/r.js:541:31)
...
तो मेरी सवाल कर रहे हैं:
- इस कोड की संरचना करने के सही तरीका है तो
mocha
test
निर्देशिका) देखता है? - मेरा परीक्षण क्यों नहीं चल रहा है?
- इस तरह की चीज़ सीखने का सबसे अच्छा तरीका क्या है? मुझे Google के साथ अच्छे उदाहरण खोजने में कठिनाई हो रही है।
धन्यवाद ...
[खेद - क्षण भर तैनात गलत कोड से परिणाम; अब तय किया गया]
पीएस मैं requjs का उपयोग कर रहा हूं क्योंकि मैं बाद में ब्राउज़र से यह कोड (या इसमें से कुछ) चलाने के लिए भी चाहता हूं।
अपडेट/समाधान
कुछ ऐसा जो नीचे दिए गए उत्तर में नहीं है कि मैं ऊपर परीक्षण शैली के लिए mocha -u tdd
का उपयोग करने के लिए आवश्यक है। यहाँ अंतिम परीक्षण (जो भी ज़ोर की आवश्यकता है) और इसके उपयोग है:
> cat test/utils.js
var requirejs = require('requirejs');
requirejs.config({nodeRequire: require});
requirejs(['../src/utils', 'assert'], function(utils, assert) {
suite('utils', function() {
test('should always work', function() {
assert.equal(1, 1);
})
})
});
> mocha -u tdd
.
✔ 1 tests complete (1ms)
मेरे लिए इसे काम करने के लिए, मुझे amdefine मॉड्यूल स्थापित करने और इन पंक्तियों को जोड़ने की आवश्यकता है coffeescript = >> परिभाषित = आवश्यकता ('amdefine') (मॉड्यूल) अगर (टाइप करें परिभाषित करें! = 'Function') << = में इसे बनाने के लिए मेरी 'कक्षा' फ़ाइल (परीक्षण फ़ाइल नहीं)। यह – devric