PhantomJS在Jasmine中捕获错误

时间:2015-03-11 14:30:57

标签: javascript unit-testing jasmine phantomjs grunt-contrib-jasmine

问题

我有一个非常大的测试套件,适用于大规模应用。

该套件包含超过20种不同的JS规范文件,这些文件通过数百次针对所述应用程序的测试运行。它已经达到了这样的程度:Jasmine(通过Grunt手表运行)无法运行所有测试而不会抛出“警告:未定义使用 - 强制继续”消息。

如果我运行SpecRunner.html文件,所有测试都通过,并且没有其他信息,即使PhantomJS说可以在那里找到更多信息。

对于可以编写的测试数量是否存在某种限制?

我正在使用grunt v。 ^ 0.4.5 和grunt-contrib-jasmin v。 ~0.6.3

enter image description here

Gruntfile.js

module.exports = function(grunt) {
    // Project configuration. Can be any arbitrary data.
    // Things you might want to <% %> include in tasks.
    // These data can be accessed by grunt.config.<property>
    // Taksa are also configured here taking the format:
    // <taskname>: { <target1>: {}, <target2>: {} }

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        js: {
            lib: [
                'PriceAnalytics.Web/Scripts/lib/jquery/*.min.js', // jquery needs to be loaded before bootstrap
                'PriceAnalytics.Web/Scripts/lib/bootstrap/bootstrap.min.js',
                'PriceAnalytics.Web/Scripts/lib/knockout/knockout*.js',
                'PriceAnalytics.Web/Scripts/lib/underscore/underscore.min.js',
                'PriceAnalytics.Web/Scripts/lib/underscore/underscore.mixin.deepExtend.js',
                'PriceAnalytics.Web/Scripts/lib/globalize/globalize.js',
                'PriceAnalytics.Web/Scripts/lib/highcharts/highcharts.js'
            ],
            src: 'PriceAnalytics.Web/Scripts/src/**/*.js',
            spec: 'PriceAnalytics.Web.Test/spec/**/*.js'
        },

        jasmine: {
            src: '<%= js.src %>',
            options: {
                specs: '<%= js.spec %>',
                vendor: '<%= js.lib %>',
                //display: 'short',
                summary: true
                //keepRunner: true  could probably leverage this option so that we don't have to manually maintain teh specrunner script tags
            }
        },

        watch: {
            gruntfile: {
                files: '<%= jshint.gruntfile.src %>',
                tasks: ['jshint:gruntfile']
            },
            src_spec: {
                files: '<%= jshint.src_spec.src %>',
                tasks: ['jshint:src_spec', 'jasmine']
            }
        }
    });

    // Load the plugins
    grunt.loadNpmTasks('grunt-contrib-jasmine');
    grunt.loadNpmTasks('grunt-contrib-watch');

    // Default task(s)
    grunt.registerTask('default', ['jasmine']);
};

1 个答案:

答案 0 :(得分:0)

原来我们的应用程序代码中存在一个错误,它从try / catch中抛出错误,从而导致测试失败/不运行。