我有一个使用requireJS的应用程序,我想使用grunt-contrib-jasmie来测试它。为了让茉莉花能够使用,我正在使用cloudchen的grunt-template-jasmine-requirejs。该应用程序具有以下目录结构:
topLevelApplicationFolder
|_app.html
|_Gruntfile.js
|_package.json
|_js
|_app.js
|_app
|_modules
|_rgbaHelpers.js
|_main.js
|_lib
|_require.js
|_spec
|_rgba_spec.js
app.js是我的requireJS配置文件:
requirejs.config({
baseUrl: "js/lib",
paths: {
app: "../app"
},
shim: {
spectrum: {
deps: ["jquery"],
exports: "spectrum"
}
}
});
// Load the main app module to start the app
requirejs(["app/main"]);
我的Gruntfile.js如下:
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
jasmine : {
taskName: {
src : 'js/**/*.js',
options : {
specs : 'spec/**/*.js',
template: require('grunt-template-jasmine-requirejs'),
templateOptions: {
requireConfig: {
baseUrl: 'js/lib'
}
// requireConfigFile: './js/app.js'
}
}
}
},
jshint: {
all: [
'Gruntfile.js',
'js/**/*.js',
'spec/**/*.js'
],
options: {
jshintrc: '.jshintrc'
}
}
});
grunt.loadNpmTasks('grunt-contrib-jasmine');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.registerTask('test', ['jshint', 'jasmine']);
grunt.registerTask('default', ['test']);
};
rgba_spec.js是我想要运行的测试。这很简单:
define(['js/app/modules/rgbaHelpers'], function (rgbaHelpers) {
describe('A suite', function() {
it('should pass this test', function() {
expect(rgbaHelpers).not.toBe(null);
});
});
});
但是当我运行grunt jasmine时,我收到以下错误:
Error: scripterror: Illegal path or script error: ['js/app/modules/rgbaHelpers']
我一整天都在摸不着头脑。有谁知道这里发生了什么?
答案 0 :(得分:0)
所以我能够通过从模板选项中完全删除requireConfig和baseURL来解决这个问题:
jasmine : {
taskName: {
src : 'js/**/*.js',
options : {
specs : 'spec/**/*.js',
template: require('grunt-template-jasmine-requirejs'),
templateOptions: {
}
}
}
}
然后在每个规范的顶部我会做这样的事情:
define(['js/app/modules/mouseHelpers'], function (mouseHelpers) {