Estoy tratando de definir algunos puntos finales y hacer una prueba usando nodejs. En server.jstengo:
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.jsestoy 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.jsme 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ímbolodescribeque se defina allí.Respuestas:
Suponiendo que está probando a través de
mocha, debe ejecutar sus pruebas utilizando elmochacomando en lugar delnodeejecutable.Entonces, si aún no lo ha hecho, asegúrese de hacerlo
npm install mocha -g. Luego, simplemente ejecutemochaen 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 runoyarn, así que solo "prueba": "mocha -V" será suficientemocha -Vno 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
tddantes, arrojaReferenceError: describe is not definedPero, 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 parascriptsy apunte al binario mocha• Coloque sus archivos de especificaciones en un directorio nombrado
/testen su directorio raíz• En sus archivos de especificaciones, importe la biblioteca de aserciones
• No es necesario importar mocha, ejecutar
mocha.setupo 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.itEsto 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
nodeno 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é
tddcomo en los documentos, pero eso no funcionó, aunque bdd funcionó.fuente
describesolo 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.