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

Tim*_*Tim 2 typescript zonejs angular-cli angular angular-cli-v6

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

async() 测试助手需要区域但找不到。请确保您的环境包括 zone.js/dist/zone.js 抛出

错误:非法状态:无法加载指令 FooComponent 的摘要。

奇怪的是,如果我运行ng g c foo(即它不在 components 文件夹中生成),则测试通过。我的测试都适用于其他文件夹,但这是我的 components 文件夹中的第一个测试(也是一个组件的第一个测试)。其他测试都不是异步的。

我是新手,ng test所以我可能会遗漏一些非常明显的东西。我没想到需要设置任何东西zone.js来运行默认测试。我应该在哪里配置它?还是我在这里遗漏了其他东西,也许是我的components文件夹特有的东西?

Tim*_*Tim 5

将以下内容添加到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';
Run Code Online (Sandbox Code Playgroud)