Estou tentando definir alguns pontos de extremidade e fazer um teste usando nodejs
. Em server.js
eu tenho:
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);
e em func1.js
:
var testend = function(req, res) {
serialPort.write("1", function(err, results) {
serialPort.write("2" + "\n", function(err, results) {
});
});
});
exports.testend = testend;
Agora test.js
, estou tentando usar este ponto de extremidade:
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();
});
});
});
Mas quando executo node test.js
, estou recebendo este erro:
descreva ('Conta', função () { ^ ReferenceError: description não está definido no objeto. (/test/test.js:9:1) em Module._compile (module.js: 456: 26) em Object.Module._extensions..js (module.js: 474: 10) em Module.load (module.js: 356: 32) em Function.Module._load (module.js: 312: 12) em Function.Module.runMain (module.js: 497: 10) na inicialização (node.js: 119: 16) em node.js: 906: 3
Como posso corrigir o problema?
describe()
ser e onde é definido? Ao examinar seu arquivo test.js, não há símbolodescribe
que está sendo definido lá.Respostas:
Supondo que você esteja testando via
mocha
, você deve executar seus testes usando omocha
comando em vez donode
executável.Portanto, se você ainda não o fez, verifique se sim
npm install mocha -g
. Em seguida, basta executarmocha
no diretório raiz do seu projeto.fonte
"test": "./node_modules/.bin/mocha -V"
na seção de scripts de package.json e instalar mocha como mais uma dependência./node_modules/.bin
, esse caminho já está carregado quando você usanpm run
ouyarn
, tão só "teste": "mocha -V" será suficientemocha -V
não está claro se ele foi carregado a partir global ou local é por isso que ainda preferem mostrar o caminho, mesmo que não é exigido pelo sistemase você estiver usando o vscode, deseja depurar seus arquivos
Eu usei
tdd
antes, jogouReferenceError: describe is not defined
Mas, quando eu uso
bdd
, funciona!desperdice meio dia para resolvê-lo ....
fonte
Para executar testes com o nó / npm sem instalar o Mocha globalmente, você pode fazer o seguinte:
• Instale o Mocha localmente no seu projeto (
npm install mocha --save-dev
)• Opcionalmente, instale uma biblioteca de asserções (
npm install chai --save-dev
)• No seu
package.json
, adicione uma seçãoscripts
e direcione o binário mochaColoque seus arquivos de especificação em um diretório nomeado
/test
em seu diretório raiz• Nos seus arquivos de especificação, importe a biblioteca de asserções
• Você não precisa importar mocha, executar
mocha.setup
ou chamarmocha.run()
• Em seguida, execute o script na raiz do seu projeto:
fonte
mocha
, ela funcionará.mocha --recursive
{"scripts": { "test": "node ./node_modules/mocha/bin/mocha --recursive test" }}
Você também pode fazer assim:
Referência: http://mochajs.org/#require
fonte
var mocha = require('mocha') var describe = mocha.describe var it = mocha.it
isso é realmente redundante. Você podevar {describe, it} = require('mocha')
com a atribuição de desestruturação doEu tenho esse erro ao usar "--ui tdd". remova isso ou use o problema de correção "--ui bdd".
fonte
OP perguntou sobre a execução de
node
não democha
. Este é um caso de uso muito comum, consulte Usando o Mocha programaticamenteÉ isso que o injetado descreve e faz nos meus testes.
Eu tentei
tdd
como nos documentos, mas isso não funcionou, mas o bdd funcionou.fonte
describe
só está disponível com o BDD e não está disponível para o 'TDD', de alguma forma no script de instalação, usei o TDD e fiquei pensando que configurava como 'BDD'. A pesquisa na Internet não ajuda em nada, pois minha percepção era de que fiz a configuração correta (BDD), mas ainda assim recebo um erro. É apenas a sua solução (que é única em relação a outras soluções encontradas nos resultados de pesquisa na Internet) me fez adicionar código adicional que substituiu minha configuração errada e finalmente funcionou. É somente durante outra instalação, eu vi meu erro de digitação e depois de corrigi-lo para 'BDD', o código acima não era necessário.