J'essaie de définir certains points de terminaison et de faire un test en utilisant nodejs
. Dans server.js
j'ai:
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);
et en func1.js
:
var testend = function(req, res) {
serialPort.write("1", function(err, results) {
serialPort.write("2" + "\n", function(err, results) {
});
});
});
exports.testend = testend;
Maintenant test.js
, j'essaie d'utiliser ce point de terminaison:
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();
});
});
});
Mais quand je cours node test.js
, j'obtiens cette erreur:
describe ('Compte', function () { ^ ReferenceError: la description n'est pas définie à Object. (/test/test.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) à Function.Module.runMain (module.js: 497: 10) au démarrage (node.js: 119: 16) à node.js: 906: 3
Comment puis-je résoudre le problème?
describe()
être et où est-il défini? En regardant votre fichier test.js, il n'y a aucun symboledescribe
qui y est défini.Réponses:
En supposant que vous testez via
mocha
, vous devez exécuter vos tests en utilisant lamocha
commande au lieu de l'node
exécutable.Donc, si vous ne l'avez pas déjà fait, assurez-vous de le faire
npm install mocha -g
. Ensuite, exécutez simplementmocha
dans le répertoire racine de votre projet.la source
"test": "./node_modules/.bin/mocha -V"
dans la section scripts de package.json et d'installer mocha comme une dépendance supplémentaire./node_modules/.bin
, ce chemin est déjà chargé lorsque vous utiliseznpm run
ouyarn
, donc juste "test": "mocha -V" suffiramocha -V
il n'est pas clair s'il a été chargé à partir de global ou local, c'est pourquoi je préfère toujours afficher le chemin même s'il n'est pas requis par le systèmesi vous utilisez vscode, souhaitez déboguer vos fichiers
J'utilisais
tdd
avant, ça jetteReferenceError: describe is not defined
Mais, quand je l'utilise
bdd
, ça marche!perdre une demi-journée pour le résoudre ...
la source
Pour exécuter des tests avec node / npm sans installer Mocha globalement, vous pouvez le faire:
• Installez Mocha localement dans votre projet (
npm install mocha --save-dev
)• Installez éventuellement une bibliothèque d'assertions (
npm install chai --save-dev
)• Dans votre
package.json
, ajoutez une sectionscripts
et ciblez le binaire moka• Placez vos fichiers de spécifications dans un répertoire nommé
/test
dans votre répertoire racine• Dans vos fichiers de spécifications, importez la bibliothèque d'assertions
• Vous n'avez pas besoin d'importer du moka, d'exécuter
mocha.setup
ou d'appelermocha.run()
• Exécutez ensuite le script depuis la racine de votre projet:
la source
mocha
, cela fonctionnera.mocha --recursive
{"scripts": { "test": "node ./node_modules/mocha/bin/mocha --recursive test" }}
Vous pouvez également faire comme ceci:
Référence: http://mochajs.org/#require
la source
var mocha = require('mocha') var describe = mocha.describe var it = mocha.it
c'est en fait redondant. Vous pouvezvar {describe, it} = require('mocha')
avec l' affectation de déstructurationj'ai cette erreur lors de l'utilisation de "--ui tdd". supprimez-le ou utilisez le correctif "--ui bdd".
la source
OP a demandé comment fuir de
node
pas democha
. Il s'agit d'un cas d'utilisation très courant, voir Utilisation de Mocha par programmeC'est ce qui a été injecté et décrit dans mes tests.
J'ai essayé
tdd
comme dans la documentation, mais cela n'a pas fonctionné, mais bdd a fonctionné.la source
describe
n'est disponible qu'avec BDD et non disponible pour 'TDD', d'une manière ou d'une autre dans le script de configuration, j'ai utilisé TDD et j'ai continué à penser que j'avais configuré comme 'BDD'. La recherche sur Internet ne sert à rien, car ma perception était que j'ai fait une configuration correcte (BDD), mais j'obtiens toujours une erreur. C'est seulement votre solution (qui est unique par rapport à toutes les autres solutions trouvées sur les résultats de recherche sur Internet) m'a fait ajouter du code supplémentaire qui a remplacé mon mauvais paramètre et a finalement fonctionné. Ce n'est que lors d'une autre configuration de configuration, j'ai vu ma faute de frappe et après l'avoir corrigée en 'BDD', le code ci-dessus n'était pas nécessaire.