Saya mencoba mendefinisikan beberapa titik akhir dan melakukan tes menggunakan nodejs
. Dalam server.js
aku punya:
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);
dan di func1.js
:
var testend = function(req, res) {
serialPort.write("1", function(err, results) {
serialPort.write("2" + "\n", function(err, results) {
});
});
});
exports.testend = testend;
Sekarang test.js
saya mencoba menggunakan titik akhir ini:
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();
});
});
});
Tetapi ketika saya menjalankan node test.js
saya mendapatkan kesalahan ini:
menggambarkan ('Akun', fungsi () { ^ ReferenceError: menggambarkan tidak didefinisikan di Object. (/test/test.js:9:1) di Module._compile (module.js: 456: 26) di Object.Module._extensions..js (module.js: 474: 10) di Module.load (module.js: 356: 32) di Function.Module._load (module.js: 312: 12) di Function.Module.runMain (module.js: 497: 10) saat startup (node.js: 119: 16) di node.js: 906: 3
Bagaimana saya bisa memperbaiki masalah ini?
describe()
dan di mana itu didefinisikan? Dalam melihat file test.js Anda, tidak ada simboldescribe
yang didefinisikan di sana.Jawaban:
Dengan asumsi Anda menguji melalui
mocha
, Anda harus menjalankan tes Anda menggunakanmocha
perintah, bukannode
dieksekusi.Jadi, jika Anda belum melakukannya, pastikan Anda melakukannya
npm install mocha -g
. Kemudian jalankan sajamocha
di direktori root proyek Anda.sumber
"test": "./node_modules/.bin/mocha -V"
di bagian skrip package.json dan instal mocha sebagai satu lagi ketergantungan./node_modules/.bin
, jalan ini sudah dimuat saat Anda menggunakannpm run
atauyarn
, jadi cukup "test": "mocha -V" sudah cukupmocha -V
saja tidak jelas apakah itu dimuat dari global atau lokal itu sebabnya saya masih lebih suka menunjukkan jalan meskipun tidak diperlukan oleh sistemjika Anda menggunakan vscode, ingin men-debug file Anda
Saya menggunakan
tdd
sebelumnya, itu melemparReferenceError: describe is not defined
Tapi, ketika saya gunakan
bdd
, itu berhasil!buang setengah hari untuk menyelesaikannya ....
sumber
Untuk menjalankan tes dengan node / npm tanpa menginstal Mocha secara global, Anda dapat melakukan ini:
• Instal Mocha secara lokal ke proyek Anda (
npm install mocha --save-dev
)• Secara opsional menginstal perpustakaan pernyataan (
npm install chai --save-dev
)• Di Anda
package.json
, tambahkan bagian untukscripts
dan targetkan binari moka• Letakkan file spesifikasi Anda di direktori bernama
/test
di direktori root Anda• Dalam file spesifikasi Anda, impor perpustakaan pernyataan
• Anda tidak perlu mengimpor moka, lari
mocha.setup
, atau meneleponmocha.run()
• Kemudian jalankan skrip dari root proyek Anda:
sumber
mocha
, itu akan berhasil.mocha --recursive
{"scripts": { "test": "node ./node_modules/mocha/bin/mocha --recursive test" }}
Anda juga bisa melakukan ini:
Referensi: http://mochajs.org/#require
sumber
var mocha = require('mocha') var describe = mocha.describe var it = mocha.it
ini sebenarnya berlebihan. Anda dapatvar {describe, it} = require('mocha')
dengan penugasan penghancuransaya memiliki kesalahan ini saat menggunakan "--ui tdd". hapus ini atau gunakan memperbaiki masalah "--ui bdd".
sumber
OP bertanya tentang lari dari
node
bukan darimocha
. Ini adalah kasus penggunaan yang sangat umum, lihat Menggunakan Mocha Secara ProgramatisInilah yang disuntikkan menggambarkan dan itu ke dalam tes saya.
Saya mencoba
tdd
seperti dalam dokumen, tetapi itu tidak berhasil, bdd bekerja.sumber
describe
hanya tersedia dengan BDD dan tidak tersedia untuk 'TDD', entah bagaimana dalam skrip setup, saya menggunakan TDD & terus berpikir bahwa saya mengkonfigurasi sebagai 'BDD'. Pencarian Internet tidak membantu, karena persepsi saya adalah, saya melakukan pengaturan yang benar (BDD), tetapi saya masih mendapatkan kesalahan. Ini hanya solusi Anda, (yang unik dari solusi lain yang ditemukan di hasil pencarian Internet) membuat saya menambahkan kode tambahan yang mengesampingkan pengaturan yang salah dan akhirnya berhasil. Hanya selama konfigurasi konfigurasi lain, saya melihat kesalahan ketik saya & setelah memperbaikinya menjadi 'BDD', kode di atas tidak diperlukan.