Comment charger un fichier pour tester avec le nid Jasmine?

J'ai un fichier JavaScript simple, color.js et un fichier de spécifications correspondant, colorSpec.js .

Color.js:

 function Color() { } 

ColorSpec.js:

 require('./color.js'); describe("color", function() { it("should work", function() { new Color(255, 255, 255); }); }); 

Lorsque je cours jasmine-node colorSpec.js , j'ai l'exception suivante:

 ReferenceError: Color is not defined 

Comment puis-je obtenir Jasmine pour charger mon fichier color.js avant d'exécuter colorSpec.js ?

Vous pouvez charger votre couleur.js dans colorSpec.js avec un require (). Je ne vois pas comment jasmine peut deviner toutes les dépendances sans que vous racontez à jasmine ce qu'elles sont exactement dans votre fichier de spécifications. Edit: Une solution rapide et sale, mais peut-être qu'il y a quelque chose de Jasmine pour faire cela:

 fs = require('fs') myCode = fs.readFileSync('./color.js','utf-8') // depends on the file encoding eval(myCode) 

Alors votre classe devrait être disponible avec du jasmin

Si vous appelez obligatoirement directement sur votre fichier, je pense qu'il faut créer un module et l'exporter

Lors de l'utilisation du noeud Jasmine, vous voudrez exporter votre objet / fonction / classe, dans ce cas Couleur, en tant que module de noeud. J'aime essayer de faire fonctionner mes modules à la fois dans le nœud ou dans un navigateur, de la manière suivante:

Structure du dossier:

 js - src/ color.js - spec/ colorSpec.js 

Src / color.js

 /** * class Color * * @constructor */ function Color(red, green, blue) { var current = [red, green, blue]; this.getCurrent = function () { return current; } } // Export node module. if ( typeof module !== 'undefined' && module.hasOwnProperty('exports') ) { module.exports = Color; } 

Spec / colorSpec.js

 var Color = require('../src/color.js'); describe("Test the Color object", function() { var color = new Color(255, 255, 255); it('to verify that it can return a color.', function() { expect(color.getCurrent()).toContain(255); }); });