J'essaie de définir des points de terminaison et d'effectuer un test à l'aide de 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, dans test.js
, j'essaie d'utiliser ce noeud final:
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 lance node test.js
je reçois cette erreur:
describe ('Compte', function () { ^ ReferenceError: describe n'est pas défini dans Object. (/test/test.js:9:1) dans Module._compile (module.js: 456: 26) dans Object.Module._extensions..js (module.js: 474: 10) dans Module.load (module.js: 356: 32) at Function.Module._load (module.js: 312: 12) at 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?
En supposant que vous testez via mocha
, vous devez exécuter vos tests à l'aide de la commande mocha
au lieu de l'exécutable node
.
Donc, si vous ne l'avez pas déjà fait, assurez-vous de faire npm install mocha -g
. Ensuite, exécutez simplement mocha
dans le répertoire racine de votre projet.
Pour exécuter des tests avec node/npm sans installer Mocha globalement, procédez comme suit:
• Installer Mocha localement sur votre projet (npm install mocha --save-dev
)
• installer éventuellement une bibliothèque d'assertion (npm install chai --save-dev
)
• Dans votre package.json
, ajoutez une section pour scripts
et ciblez le binaire mocha.
"scripts": {
"test": "node ./node_modules/mocha/bin/mocha"
}
• Placez vos fichiers de spécification dans un répertoire nommé /test
dans votre répertoire racine.
• Dans vos fichiers de spécification, importez la bibliothèque d'assertion.
var expect = require('chai').expect;
• Vous n'avez pas besoin d'importer du mocha, d'exécuter mocha.setup
ou d'appeler mocha.run()
• Exécutez ensuite le script à partir de la racine de votre projet:
npm test
Vous pouvez aussi faire comme ça:
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)
})
})
Référence: http://mochajs.org/#require
si vous utilisez vscode, voulez déboguer vos fichiers
J'ai déjà utilisé tdd
avant, il jette ReferenceError: describe is not defined
Mais quand j'utilise bdd
, ça marche!
perdre une demi-journée pour le résoudre ....
{
"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"
},
j'ai cette erreur en utilisant "--ui tdd". supprimez-le ou utilisez "--ui bdd" pour résoudre le problème.
OP a demandé d'exécuter node
et non pas mocha
. C’est un cas d’utilisation très courant, voir Utilisation de Mocha par programmation
C’est ce que les injecteurs décrivent et cela dans mes tests.
mocha.ui('bdd').run(function (failures) {
process.on('exit', function () {
process.exit(failures);
});
});
J'ai essayé tdd
comme dans la documentation, mais cela n'a pas fonctionné, mais bdd a fonctionné.