【问题标题】:Karma jasmine test fails when running on PhantomJS在 PhantomJS 上运行时,Karma jasmine 测试失败
【发布时间】:2017-06-16 14:25:55
【问题描述】:

当我使用 Karma Chrome 启动器时,我使用的 javascript 测试通过了,但是当我使用 PhantomJS 浏览器时它们失败了。这个代码库也使用 ES6 和 babel,但我认为这不是问题,因为我在其他模块中的所有 ES6 代码都没有破坏。

我在理解我为 3 个失败的测试获得的堆栈跟踪方面遇到了最大的麻烦。错误注释SyntaxError: Unexpected token ',' (line 2) Function@[native code]。我不知道该怎么做或如何使用断点进行调试,因为它正在谈论本机代码。我尝试的如下。

PhantomJS 2.1.1 (Mac OS X 0.0.0) paymentForm completes payment, displays thank you FAILED
    SyntaxError: Unexpected token ',' (line 2)
    Function@[native code]
    compile@bower_components/angular/angular.js:14539:27
    parse@bower_components/angular/angular.js:15422:36
    $parse@bower_components/angular/angular.js:15587:44
    $watch@bower_components/angular/angular.js:16800:25
    link@bower_components/angular/angular.js:24221:21
    bower_components/angular/angular.js:1266:23
    invokeLinkFn@bower_components/angular/angular.js:9757:15
    nodeLinkFn@bower_components/angular/angular.js:9156:23
    compositeLinkFn@bower_components/angular/angular.js:8459:23
    nodeLinkFn@bower_components/angular/angular.js:9151:35
    bower_components/angular/angular.js:9496:36
    processQueue@bower_components/angular/angular.js:16104:30
    bower_components/angular/angular.js:16120:39
    $eval@bower_components/angular/angular.js:17378:28
    $digest@bower_components/angular/angular.js:17191:36
    flush@bower_components/angular-mocks/angular-mocks.js:1791:45
    src/app/payment/payment.directive.spec.js:163:25

我的尝试:

  • 在 v4.2.6 和 6.10.2 之间更改并重新安装了以下软件包
  • 升级了 npm 包:
    • 业力 0.12.31 -> 1.3.0,
    • karma-phantomjs-launcher 1.0.0 -> 1.04(最新) 没有成功。

【问题讨论】:

    标签: javascript phantomjs karma-runner karma-jasmine


    【解决方案1】:

    破坏我的代码的是我的角度模板中的重复键。哇。啊,成为 Web 开发人员的乐趣。奇怪的是,我的旧代码在 Chrome、Firefox 或 Safari 中没有中断。

    <div
      class="slds-spinner"
      ng-class="{
        'slds-spinner--small': size === 'small',
        'slds-spinner--small': size === 'medium' || !size,
        'slds-spinner--large': size === 'large',
        'slds-spinner--inverse': inverse === 'true'
      }"
      aria-hidden="false"
      role="alert">
    
      <div class="slds-spinner__dot-a"></div>
      <div class="slds-spinner__dot-b"></div>
    </div>
    

    当我把它改成这样时:

    <!-- No more dupe keys -->
    <div
      class="slds-spinner"
      ng-class="{
        'slds-spinner--small': size === 'small' || !size,
        'slds-spinner--medium': size === 'medium',
        'slds-spinner--large': size === 'large',
        'slds-spinner--inverse': inverse === 'true'
      }"
      aria-hidden="false"
      role="alert">
    
      <div class="slds-spinner__dot-a"></div>
      <div class="slds-spinner__dot-b"></div>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多