Je suis en train d'essayer de comprendre comment élaborer autonome de code Javascript. Je veux écrire Javascript code avec des tests et des modules, l'exécution de la ligne de commande. J'ai donc installé node.js
et npm
avec les bibliothèques requirejs
, underscore
, et mocha
.
Mon répertoire de la structure ressemble à ceci:
> tree .
.
├── node_modules
├── src
│ └── utils.js
└── test
└── utils.js
où src/utils.js
est un petit module que je suis en train d'écrire, avec le code suivant:
> 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();
};
}
});
et test/utils.js
est le test:
> 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);
})
})
});
que j'ai ensuite essayer de l'exécuter à partir du haut niveau de répertoire ( mocha
voit l' test
directory):
> 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)
...
Donc mes questions sont:
- Est-ce la bonne façon de structurer le code?
- Pourquoi mon test ne fonctionne pas?
- Quelle est la meilleure façon d'apprendre ce genre de chose? Je vais avoir un moment difficile de trouver de bons exemples avec Google.
Merci...
[désolé - momentanément résultats publiés à partir d'un code erroné; fixe maintenant]
PS je suis à l'aide de requirejs parce que je tiens aussi à exécuter ce code (ou certains) à partir d'un navigateur, plus tard.
Mise À Jour / Solution
Quelque chose qui n'est pas dans les réponses ci-dessous, c'est que j'avais besoin d'utiliser mocha -u tdd
pour le test de style ci-dessus. Voici le test final (ce qui requiert également l'affirmer) et de son utilisation:
> 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)