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