我已经使用grunt和jasmine设置了一些测试,但是当我尝试在终端中运行测试时遇到了问题。我看到了这个错误:
>> Error caught from phantom. More info can be found by opening the Spec Runner in a browser.
当我在浏览器中运行spec runner文件时,我看到所有测试都通过,并且没有显示任何类型的错误。
有谁知道这个问题可能是什么原因?
这是我的Gruntfile:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
/**
* Uglify task to minify all javscript files
* seperating out all script files into a development directory
* and then having all 'production' scripts within a product directory
*
* Note: Will need a bit of work to target the plugins folder
* independently to the main apps - as we may have unminified
* versions - aswell as our Backbone views.
*/
uglify: {
options: {
mangle: false
},
files: {
src: 'assets/scripts/development/*.js', // source files mask
dest: 'assets/scripts/production/', // destination folder
expand: true, // allow dynamic building
flatten: true, // remove all unnecessary nesting
ext: '.min.js' // replace .js to .min.js
}
},
/**
* Sass module compiles all SASS files
* This quickly avoids having to open and save
* every single css file if a conflict is present
*/
sass: {
dist: {
files: [{
expand: true,
cwd: 'assets/styles/sass/',
src: ['*.scss'],
dest: 'assets/styles/',
ext: '.css'
}]
}
},
/**
* Image minification for compressing images
* accross the project and moving them into their own folder
* all references once production has gone through points to those
*/
imagemin: {
png: {
options: {
optimizationLevel: 7
},
files: [
{
expand: true,
cwd: 'assets/images/',
src: ['**/*.png'],
dest: 'assets/images/compressed/',
ext: '.png'
}
]
},
jpg: {
options: {
progressive: true
},
files: [
{
expand: true,
cwd: 'assets/images/',
src: ['**/*.jpg'],
dest: 'assets/images/compressed/',
ext: '.jpg'
}
]
}
},
/**
* PHP Code Standards fixer
* Runs through the app (main code base for each project)
* to ensure conforms to a standard
*/
phpcsfixer: {
app: {
dir: 'app'
},
options: {
bin: 'php-cs-fixer',
ignoreExitCode: true,
level: 'all',
quiet: false,
diff: true,
verbose: true
}
},
jasmine : {
src : 'assets/scripts/views/*.js',
options : {
specs : 'assets/scripts/tests/*.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-jasmine');
grunt.loadNpmTasks('grunt-php-cs-fixer');
grunt.loadNpmTasks('grunt-contrib-imagemin');
grunt.loadNpmTasks('grunt-contrib-sass');
// Load the plugin that provides the "uglify" task.
grunt.loadNpmTasks('grunt-contrib-uglify');
// Default task(s).
grunt.registerTask('default', [ 'uglify', 'sass' ] );
//Jasmine unit tests
grunt.registerTask('test', [ 'jasmine' ] );
};
感谢您的帮助。
答案 0 :(得分:2)
我遇到了同样的问题。在我的情况下,罪魁祸首似乎是select2库,但我不得不使用一个消除过程来解决这个问题。
尝试直接通过phantomjs加载_SpecRunner.html
,而不是通过grunt。我使用了一个基本的包装脚本,它与您在PhantomJS主页上看到的基本相同,这样我就可以逐个删除运行器中的脚本标记,直到我有一些没有抛出语法错误的东西。
如果您使用--force
运行grunt任务,也可能会获得有关错误来源的更多详细信息。
我无法确定错误的根本原因。
答案 1 :(得分:0)
对我来说,在host
添加正确的 Gruntfile.js
选项修复了控制台测试(浏览器测试已经有效)。
jasmine: {
test: {
src: ['src/<%= pkg.name %>.js'],
options: {
specs: ['spec/*-spec.js'],
outfile: 'spec.html',
keepRunner: true,
host: 'http://example.com/folder-containing-to-spec-file/',
vendor: ['vendor/file.js']
}
}
}
}
如果没有host
选项,看起来Phantomjs正在请求来自file:///users/path/to/local/files
的内容(显然)不是浏览器可以请求内容的服务器(在本地工作时)。