9

我已经使用 grunt 和 jasmine 设置了一些测试,但是当我尝试在终端中运行测试时遇到了问题。我看到这个错误:

>> Error caught from phantom. More info can be found by opening the Spec Runner in a browser.

当我在浏览器中运行规范运行程序文件时,我看到我的所有测试都通过了,并且没有显示任何类型的错误。

有谁知道这个问题可能是什么原因?

这是我的 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' ] );

};

谢谢你的帮助。

4

2 回答 2

2

我遇到了同样的问题。就我而言,罪魁祸首似乎是 select2 库,但我不得不使用消除过程来解决这个问题。

尝试_SpecRunner.html直接通过 phantomjs 加载,而不是通过 grunt。我使用了一个基本的包装脚本,它与您在 PhantomJS 主页上看到的基本相同,这样我就可以一个一个地删除运行器中的脚本标签,直到我有一些不会引发语法错误的东西。

如果您使用--force.

我无法确定错误的根本原因。

于 2013-11-01T22:06:49.507 回答
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(显然)不是浏览器可以从中请求内容的服务器(在本地工作时)。

于 2015-07-30T14:49:17.757 回答