JavaScript test (Mokka) mit 'import' js-Datei
Verstehe ich module.export
und require
mannner:
Dass externe js-Datei für mocha testen
Obwohl es ziemlich brauchbar, solange es ein Modul, ich fühle mich auf diese Weise unpraktisch ist, da das, was ich will zu tun, ist jetzt zum testen einen code in eine Datei.
Zum Beispiel, ich habe einen code in eine Datei:
app.js
'use strict';
console.log('app.js is running');
var INFINITY = 'INFINITY';
und jetzt möchte ich zum testen diesen code in eine Datei:
test.js
var expect = require('chai').expect;
require('./app.js');
describe('INFINITY', function()
{
it('INFINITY === "INFINITY"',
function()
{
expect(INFINITY)
.to.equal('INFINITY');
});
});
Den test-code führt app.js
, so ist der Ausgang;
app.js is running
dann
ReferenceError: INFINITY is not defined
Dies ist nicht das, was ich erwartet hatte.
Möchte ich nicht verwenden module.export
und zu schreiben, wie
var app = require('./app.js');
und
app.INFINITY
und app.anyOtherValue
für jede Zeile in der test-code.
Muss es eine intelligente Art und Weise. Könnten Sie mir sagen?
Dank.
InformationsquelleAutor Ken OKABE | 2014-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
UPDATE: LETZTE ANTWORT:
Meine Vorherige Antwort ist ungültig, da
eval(code);
ist nicht nützlich für die Variablen.Glücklicherweise
node
hat eine starke mehod -vm
http://nodejs.org/api/vm.html
Jedoch, laut dem doc,
Die vm-Modul hat viele bekannte Probleme und Grenzfälle. Wenn Sie laufen in Probleme oder unerwartetes Verhalten, konsultieren Sie bitte die offenen Fragen auf GitHub. Einige der größten Probleme, die weiter unten beschrieben sind.
so, obwohl dies funktioniert auf der Oberfläche, die extra Pflege benötigt für so einen Zweck gerne testen...
NACHDEM ALLE;
Der beste Weg, fand ich in diesem Fall
schreiben Sie die test-Mokka-code in der gleichen Datei.
InformationsquelleAutor Ken OKABE
Ich in der Regel auch ein
_test
Objekt mit Referenzen auf alle meine "privaten" internen Variablen und Funktionen und setzen auf den Export. In deinem Fall:./app.js
./test/app-test.js
danke. I Art der Lösung dieses Problems, und wenn Sie fertig sind, werde ich die Lösung posten, so stay tuned!
Ich fand die Lösung, meine Antwort.
InformationsquelleAutor querie.cc