使用Angular 2和Node的Jasmine测试不起作用

时间:2017-01-10 15:36:35

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

我已经安装了ng-fullstack生成器并为Angular 2和Node选择了选项。一切都很好...除了测试。当我尝试执行测试时,它们会失败。我所做的任何搜索都告诉我什么将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测试工作有任何建议?我有点难过这个。提前谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

  '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文件块中。

如果您使用节点,您还应该有一个polyfill文件,它定义在测试开始之前将加载的所有文件,因此将上述文件放在该polyfill文件中。