Estoy tratando de definir algunos puntos finales y hacer una prueba usando nodejs
. En server.js
tengo:
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);
y en func1.js
:
var testend = function(req, res) {
serialPort.write("1", function(err, results) {
serialPort.write("2" + "\n", function(err, results) {
});
});
});
exports.testend = testend;
Ahora test.js
estoy tratando de usar este punto 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();
});
});
});
Pero cuando ejecuto node test.js
me sale este error:
describe ('Cuenta', función () { ^ ReferenceError: describe no está definido en el objeto (/test/test.js:9:1) en Module._compile (module.js: 456: 26) en Object.Module._extensions..js (module.js: 474: 10) en Module.load (module.js: 356: 32) en Function.Module._load (module.js: 312: 12) en Function.Module.runMain (module.js: 497: 10) al inicio (node.js: 119: 16) en node.js: 906: 3
¿Cómo puedo solucionar el problema?
describe()
que sea y dónde se define? Al mirar su archivo test.js, no hay ningún símbolodescribe
que se defina allí.Respuestas:
Suponiendo que está probando a través de
mocha
, debe ejecutar sus pruebas utilizando elmocha
comando en lugar delnode
ejecutable.Entonces, si aún no lo ha hecho, asegúrese de hacerlo
npm install mocha -g
. Luego, simplemente ejecutemocha
en el directorio raíz de su proyecto.fuente
"test": "./node_modules/.bin/mocha -V"
en la sección de scripts de package.json e instale mocha como una dependencia más./node_modules/.bin
, esta ruta ya está cargada cuando la usasnpm run
oyarn
, así que solo "prueba": "mocha -V" será suficientemocha -V
no está claro si se cargó desde global o local, es por eso que todavía prefiero mostrar la ruta, incluso si el sistema no lo requieresi está usando vscode, desea depurar sus archivos
Solía
tdd
antes, arrojaReferenceError: describe is not defined
Pero, cuando lo uso
bdd
, ¡funciona!perder medio día para resolverlo ...
fuente
Para ejecutar pruebas con nodo / npm sin instalar Mocha globalmente, puede hacer esto:
• Instale Mocha localmente en su proyecto (
npm install mocha --save-dev
)• Opcionalmente, instale una biblioteca de aserciones (
npm install chai --save-dev
)• En su
package.json
, agregue una sección parascripts
y apunte al binario mocha• Coloque sus archivos de especificaciones en un directorio nombrado
/test
en su directorio raíz• En sus archivos de especificaciones, importe la biblioteca de aserciones
• No es necesario importar mocha, ejecutar
mocha.setup
o llamarmocha.run()
• Luego ejecute el script desde la raíz de su proyecto:
fuente
mocha
, funcionará.mocha --recursive
{"scripts": { "test": "node ./node_modules/mocha/bin/mocha --recursive test" }}
También puedes hacer así:
Referencia: http://mochajs.org/#require
fuente
var mocha = require('mocha') var describe = mocha.describe var it = mocha.it
Esto es realmente redundante. Puedevar {describe, it} = require('mocha')
con ES6 asignación desestructuradaTengo este error cuando uso "--ui tdd". eliminar esto o usar el problema de solución "--ui bdd".
fuente
OP preguntó acerca de correr desde
node
no desdemocha
. Este es un caso de uso muy común, consulte Uso de Mocha de forma programadaEsto es lo que inyecté y lo describí en mis pruebas.
Lo intenté
tdd
como en los documentos, pero eso no funcionó, aunque bdd funcionó.fuente
describe
solo está disponible con BDD y no está disponible para 'TDD', de alguna manera en el script de configuración, usé TDD y seguí pensando que lo configuré como 'BDD'. La búsqueda en Internet no es de ayuda, ya que mi percepción era que hice la configuración correcta (BDD), pero aún así recibo un error. Es solo su solución, (que es única de cualquier otra solución que se encuentre en los resultados de búsqueda de Internet) me hizo agregar código adicional que anuló mi configuración incorrecta y finalmente funcionó. Es solo durante la configuración de otra configuración, vi mi error tipográfico y después de corregirlo a 'BDD', no se requirió el código anterior.