【问题标题】:Jasmine tests with Angular 2 and Node not working使用 Angular 2 和 Node 的 Jasmine 测试不起作用
【发布时间】:2017-05-25 03:52:57
【问题描述】:

我已经安装了 ng-fullstack 生成器并选择了 Angular 2 和 Node.js 的选项。一切都很好……除了测试。当我尝试执行测试时,它们失败了。我所做的任何搜索都告诉我将 zone.js 降级到 0.6.2 将解决问题,但是,我无法降级,因为 Angular 2 需要更高版本的 Zone.js,所以我有点卡住了:

@angular/core@2.4.2 requires a peer of zone.js@^0.7.2 but none was installed.

需要注意的一点,当我第一次安装生成器时,它会安装一个较低版本的 zone.js - 一个与让测试工作兼容的版本(根据我的谷歌搜索)。如果我使用 zone.js@^0.7.2 执行测试,我会看到此错误:

Chrome 55.0.2883 (Mac OS X 10.12.2) ERROR
  Uncaught Error: Missing: SyncTestZoneSpec
  at node_modules/zone.js/dist/jasmine-patch.js:43

10 01 2017 15:34:26.123:WARN [web-server]: 404: /base/node_modules/@angular/core/testing.js
10 01 2017 15:34:26.126:WARN [web-server]: 404: /base/node_modules/@angular/platform-browser-dynamic/testing.js

[15:34:26] 'client.unit_test' errored after 2.47 s

有人对我如何让 Jasmine 测试正常工作有任何建议吗?我对这个有点难过。提前致谢!

【问题讨论】:

    标签: node.js angular jasmine karma-jasmine zone.js


    【解决方案1】:

    您应该在测试配置文件中加载所有与区域相关的文件。

    例如,如果你使用业力,你应该包括

      'node_modules/zone.js/dist/zone.js',
      'node_modules/zone.js/dist/long-stack-trace-zone.js',
      'node_modules/zone.js/dist/proxy.js',
      'node_modules/zone.js/dist/sync-test.js',
      'node_modules/zone.js/dist/jasmine-patch.js',
      'node_modules/zone.js/dist/async-test.js',
      'node_modules/zone.js/dist/fake-async-test.js'
    

    在 karma.conf.js 文件块中。

    如果你使用 node,你还应该有一个 polyfill 文件,它定义了在测试开始之前将加载的所有文件,所以把上面的文件放在那个 polyfill 文件中。

    【讨论】:

    • 这些包含的顺序也很重要。
    猜你喜欢
    • 2017-07-23
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 2016-05-14
    • 2021-10-15
    • 1970-01-01
    • 2011-09-04
    • 2018-01-22
    相关资源
    最近更新 更多