Klassen mit node.js exportieren
Habe ich die folgenden test-code, wird ran von Jasmin-Knoten in einer Datei namens bob_test.spec.js
require('./bob');
describe("Bob", function() {
var bob = new Bob();
it("stating something", function() {
var result = bob.hey('Tom-ay-to, tom-aaaah-to.');
expect(result).toEqual('Whatever');
});
});
Um die Prüfung, die ich geschrieben habe, die folgenden Produktions-code in eine Datei namens bob.js
"use strict";
var Bob = function() {
}
Bob.prototype.hey = function (text) {
return "Whatever";
}
module.exports = Bob;
Wenn ich den test - mit jasmine-node .
- bekomme ich die folgende
F
Failures:
1) Bob encountered a declaration exception
Message:
ReferenceError: Bob is not defined
Stacktrace:
ReferenceError: Bob is not defined
at null.<anonymous> (/Users/matt/Code/oss/deliberate-practice/exercism/javascript/bob/bob_test.spec.js:4:17)
at Object.<anonymous> (/Users/matt/Code/oss/deliberate-practice/exercism/javascript/bob/bob_test.spec.js:3:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
Finished in 0.02 seconds
1 test, 1 assertion, 1 failure, 0 skipped
Basierend auf dem, was ich verstehe, über Javascript, fühle ich mich wie das funktionieren sollte. Was tut node.js anders machen mit Konstruktor-Funktionen und module exportiert, die verhindert, dass diesem aus arbeiten, wie ich denke, wie es sein sollte?
InformationsquelleAutor der Frage Matt Rogers | 2013-08-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
erfordern ein Objekt zurück, speichern Sie es irgendwo
dann verwenden Sie dieses Objekt,
InformationsquelleAutor der Antwort mrvn
Dies sollte den Fehler beheben, die Sie hatten, während der Ausführung Ihrer tests über jasmine-node:
InformationsquelleAutor der Antwort user2647543
Verbesserung marvin ' s Antwort:
So können Sie ein Objekt erstellen, übergabe an Modul.Exporte
module.exports = new Bob();
InformationsquelleAutor der Antwort Novitoll
Wenn Sie können ECMAScript 2015 können Sie deklarieren und Klassen exportieren und dann auf 'import' Ihre Klassen mit destructuring mit keine Notwendigkeit, ein Objekt zu erhalten, um die Konstruktoren.
In das Modul, das Sie exportieren, wie dies
dann, wo Sie Sie verwenden
InformationsquelleAutor der Antwort Jonas Brandel