JQuery Mobile
JQuery Mobile

Reputation: 6301

Referencing JavaScript files from Jasmine tests

I am writing some utilities that I intend to reuse across my JavaScript. This is also a learning exercise on my part. In an attempt to do this, I have the following file:

utilities.js

Object.prototype.AddPrefix = function(prefix) {
    return prefix + this;
};

I intend to call this function in JavaScript like this:

var myString = 'agree';
myString = myString.AddPrefix('dis');

Please note, that is a contrived example. I'm just trying to demonstrate calling the function. Either way, I want to test the AddPrefix function. To do that, I'm using Jasmine. I have the following Jasmine file:

utilities.tests.js

'use strict';
describe('utilities', function() {
    describe('add prefix', function() {
        it('append dis to string', function() {
            var v = 'agree';
            var actual = v.AddPrefix('dis');
            var expected = 'disagree';
            expect(actual).toBe(expected);
        });
    });
});

The two files, utilities.js and utilities.tests.js are in the same directory. I am executing Jasmine via gulp with the following script:

gulpfile.js

var gulp = require('gulp');
var jasmine = require('gulp-jasmine');

gulp.task('default', function() {});

gulp.task('test', function() {
    var testFiles = [
        'utilities/utilities.tests.js'
    ];

    return gulp
        .src(testFiles)
        .pipe(jasmine());
});

When I execute gulp test from the command-line, I get the following error:

[09:44:33] Using gulpfile C:\Projects\test\gulpfile.js
[09:44:33] Starting 'test'...
F

Failures:
1) utilities add prefix
1.1) TypeError: Object agree has no method 'AddPrefix'

1 spec, 1 failure
Finished in 0 seconds
[09:44:33] 'test' errored after 42 ms
[09:44:33] Error in plugin 'gulp-jasmine'
Message:
    Tests failed

Its like utilities.tests.js does not know where utilities.js is located. However, I do not know how to reference it. How do I do this?

Upvotes: 4

Views: 7082

Answers (1)

Ben
Ben

Reputation: 10104

Your utilities.js file is never being executed. You need to require('./utilities') in utilities.tests.js:

'use strict';

require('./utilities');

describe('utilities', function() {
    describe('add prefix', function() {
        it('append dis to string', function() {
            var v = 'agree';
            var actual = v.AddPrefix('dis');
            var expected = 'disagree';
            expect(actual).toBe(expected);
        });
    });
});

Upvotes: 6

Related Questions