从Jasmine测试中引用JavaScript文件

从Jasmine测试中引用JavaScript文件,javascript,jasmine,gulp,Javascript,Jasmine,Gulp,我正在编写一些我打算在JavaScript中重用的实用程序。这也是我的一个学习练习。为了尝试执行此操作,我有以下文件: utilities.js Object.prototype.AddPrefix = function(prefix) { return prefix + this; }; 'use strict'; describe('utilities', function() { describe('add prefix', function() { it

我正在编写一些我打算在JavaScript中重用的实用程序。这也是我的一个学习练习。为了尝试执行此操作,我有以下文件:

utilities.js

Object.prototype.AddPrefix = function(prefix) {
    return prefix + this;
};
'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);
        });
    });
});
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());
});
我打算用JavaScript调用此函数,如下所示:

var myString = 'agree';
myString = myString.AddPrefix('dis');
请注意,这是一个人为的例子。我只是想演示如何调用这个函数。无论哪种方式,我都想测试AddPrefix函数。要做到这一点,我用的是茉莉花。我有以下Jasmine文件:

实用程序.tests.js

Object.prototype.AddPrefix = function(prefix) {
    return prefix + this;
};
'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);
        });
    });
});
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());
});
两个文件,
utilities.js
utilities.tests.js
位于同一目录中。我用以下脚本通过gulp执行Jasmine:

gulpfile.js

Object.prototype.AddPrefix = function(prefix) {
    return prefix + this;
};
'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);
        });
    });
});
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());
});
当我从命令行执行
gulptest
时,我得到以下错误:

[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

它类似于
utilities.tests.js
不知道
utilities.js
在哪里。但是,我不知道如何引用它。如何执行此操作?

您的
utilities.js
文件从未被执行。您需要在
utilities.tests.js
require('./utilities')

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

如果require未定义,会发生什么?