tutorial karma javascript bdd jasmine

javascript - karma - jasmine tutorial



¿Cómo cargar un archivo para probar con Jasmine Node? (3)

Tengo un archivo JavaScript simple, color.js , y un archivo de especificaciones coincidentes, colorSpec.js .

color.js:

function Color() { }

colorSpec.js:

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

Cuando ejecuto jasmine-node colorSpec.js , obtengo la siguiente excepción:

ReferenceError: Color is not defined

¿Cómo puedo hacer que Jasmine cargue mi archivo color.js antes de ejecutar colorSpec.js ?


Así no es como funciona el requerimiento. Tu color.js necesita definir / exportar algo. Asumiré que usas require.js aquí para la cordura.

color.js

define(''Color'', function (require) { var Color = function () {}; return Color; });

Entonces en su especificación:

var Color = require(''color.js'');


Cuando use Jasmine Node, querrá exportar su objeto / función / clase, en este caso Color, como un módulo de nodo. Me gusta probar y hacer que mis módulos funcionen tanto en el nodo como en un navegador, así:

Estructura de la carpeta:

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); }); });


puede cargar su color.js en la colorSpec.js con un require (). No veo cómo jasmine puede adivinar todas las dependencias sin que le digas a jasmine qué son exactamente en tu archivo de especificaciones. Edición: Una solución rápida y sucia, pero quizás haya algo integrado en Jasmine para hacer eso:

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

entonces tu clase debería estar disponible con jazmín

Si llama, requiera directamente en su archivo, creo que necesita crear un módulo y exportarlo