angular - 如果在特定文件夹中,由 angular CLI 生成的测试将失败

标签 angular typescript angular-cli angular-cli-v6 zonejs

我通过运行 ng g c components/foo 使用 angular CLI (v6.1.4) 在我的组件文件夹中生成了一个组件然后运行 ​​ng test .新组件的测试失败并出现以下错误:

Zone is needed for the async() test helper but could not be found. Please make sure that your environment includes zone.js/dist/zone.js thrown

Error: Illegal state: Could not load the summary for directive FooComponent.


奇怪的是,如果我运行 ng g c foo (即,它不会在 components 文件夹中生成),然后测试通过。我的测试都适用于其他文件夹,但这是我的组件文件夹中的第一个测试(也是组件的第一个测试)。其他测试都不是异步的。
我对 ng test 还很陌生所以我可能会遗漏一些非常明显的东西。我没想到需要用 zone.js 设置任何东西用于运行默认测试。我应该在哪里配置它?或者还有什么我在这里遗漏的,也许是我的 components 特有的东西文件夹?

最佳答案

将以下内容添加到 foo.component.spec.ts 的顶部解决了这个问题,但我仍然不明白如果测试不在 components 中,为什么它们会起作用。文件夹。如果有人有解释,或者解决方案不涉及在每个组件的测试文件中重复这一点,我很乐意听到!

import 'zone.js';
import 'zone.js/dist/async-test.js';
import 'zone.js/dist/proxy.js';
import 'zone.js/dist/sync-test';
import 'zone.js/dist/jasmine-patch';

关于angular - 如果在特定文件夹中,由 angular CLI 生成的测试将失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52535504/

相关文章:

用于 WebSocket 后端的 Angular-CLI 代理

angular - ng build 和 ng serve 有什么区别?

html - 单击更改 block 样式

typescript 忽略静态变量并认为它正确类型安全?

javascript - 使用 Input 组件的 Angular 传递数据

angular - 使用嵌套的 *ngFor 从对象数组和键字符串数组生成表

javascript - 为什么 [(ngModel)] 破坏了 Angular 4 中的所有模板?

TypeScript 在泛型扩展上的奇怪类型行为

forms - 如何设置嵌套 formBuilder 组的值

angular - Jasmine.js 测试 - 监视 window.navigator.userAgent