业力测试成功,但PhantomJS返回“ afterAll中引发错误” SyntaxError:意外令牌','

时间:2019-05-31 17:13:44

标签: javascript angularjs phantomjs karma-jasmine

我们所有的业力单元测试似乎都可以在我们的自动化构建中成功,但是PhantomJS运行程序将非零结果返回到构建框架(TeamCity)。我在日志中发现的唯一错误是:

[17:53:31][JavaScript Unit Tests] PhantomJS 2.1.1 (Windows 8.0.0) ERROR
[17:53:31][JavaScript Unit Tests]   An error was thrown in afterAll
[17:53:31][JavaScript Unit Tests]   SyntaxError: Unexpected token ','

该项目正在使用:

  • AngularJS@1.4.8
  • karma@4.1.0
  • npm@6.9.0
  • Node.js@v12.3.1

karma.conf.js:

// Karma Configuration
module.exports = function (config) {
    config.set({
        browsers: ["PhantomJS"],
        files: [
            "scripts/vendor/angularjs/1.4.8/angular.js",
            "scripts/vendor/angularjs/1.4.8/angular-animate.js",
            "scripts/vendor/*.js",
            "scripts/angular/**/*.module.js",
            "scripts/angular/**/*.app.js",
            "scripts/angular/**/*.js",
            "scripts/angular/**/spec/*.spec.js"
        ],
        exclude: [
            "scripts/vendor/angular-1*.js",
            "scripts/vendor/angular-animate.js",
            "scripts/angular/anycastManagementApp/anycastManagement.app.js",
            "scripts/angular/cart/**/.js",
            "scripts/angular/cart/*.js",
            "scripts/vendor/bootstrap.min.js",
            "scripts/angular/angular-bootstrap-datetimepicker/**/*.*"
        ],
        plugins: [
            "karma-jasmine",
            "karma-jasmine-matchers",
            "karma-chrome-launcher",
            "karma-phantomjs-launcher",
            "karma-teamcity-reporter",
            "karma-spec-reporter",
            "karma-coverage"
        ],
        frameworks: ["jasmine", "jasmine-matchers"],
        port: 9000,
        logLevel: config.LOG_DEBUG,
        client: {
            jasmine: {
                random: false
            }
        }
    });
}

我尝试过的事情:

  • karma / Node.js的几种不同版本。
  • 一些类似的问题表明我们的测试中存在竞争条件,我们应该禁用业力的默认随机排序,但这无济于事。
  • .spec.js文件中的任何地方都没有异步。

我的下一步:我想我将开始禁用单个测试,以查看其中是否有一个对AfterAll结果的影响。

更新:通过xdescribe禁用所有测试无法解决该错误。因此,我知道该错误与测试本身无关,而与插件/库中的某些错误或不兼容有关。

1 个答案:

答案 0 :(得分:0)

显然,PhantomJS自2016年(v2.1.1)以来就没有更新,并且实际上不是一个活跃的项目。看来recommendationreplace PhantomJS in your projects with ChromeHeadless

即使是PhantomJS维护者Vitaliy Slobodin也说:

  

我认为人们最终会转向它。 Chrome速度更快,   比PhantomJS更稳定。而且它不会像疯了一样吞噬记忆。

找到一个不依赖于Google的CI无头浏览器真是太好了,但是显然PhantomJS还是在使用基于WebKit的引擎,因此,通过进行此更改,我们并没有真正失去任何浏览器的多样性/广度

按照链接文章中的说明进行操作,我的问题消失了。 (我确实遇到了另一个类似的issue,但很容易解决。)