How to Load a File for Testing with Jasmine Node? How to Load a File for Testing with Jasmine Node? javascript javascript

How to Load a File for Testing with Jasmine Node?


you could load your color.js in the colorSpec.js with a require(). I dont see how jasmine can guess all the dependencies without you telling jasmine what they are exactly in your spec file.Edit : A quick and dirty solution , but maybe there is something builtin Jasmine to do that :

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

then your class should be available with jasmine

if you call require directly on your file i think you need to create a module and export it


When using Jasmine Node, you'll want to export your object/function/class, in this case Color, as a node module. I like to try and make my modules work in both node or a browser, like so:

Folder Structure:

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


This is not how require works. Your color.js needs to define/export something. I will assume you use require.js here for sanity.

color.js

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

Then in your spec:

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