我已经通过运行try container.encode(homeTypes, forKey: .homeTypes)
使用角度CLI(v6.1.4)在我的组件文件夹中生成了一个组件,然后运行了ng g c components/foo
。新组件的测试失败,并出现以下错误:
async()测试助手需要区域,但找不到。请确保您的环境包括抛出的zone.js / dist / zone.js
错误:非法状态:无法加载指令FooComponent的摘要。
奇怪的是,如果我运行ng test
(即它不是在components文件夹中生成的),则测试通过。我的测试都适用于其他文件夹,但这是我的组件文件夹中的第一个测试(也是组件的第一个测试)。其他测试都不是异步的。
我对ng g c foo
并不陌生,所以我可能会遗漏一些非常明显的东西。我没想到需要为ng test
设置任何东西来运行默认测试。我应该在哪里配置?还是这里我还缺少其他东西,也许是我的zone.js
文件夹特有的东西?
答案 0 :(得分:1)
在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';
答案 1 :(得分:0)
在这里,我想知道我的项目是否可能是用不同版本的主测试配置生成的,所以我用Angular CLI创建了一个新的空项目,比较了src/test.ts
的两个版本,我意识到该文件确实不同,我的应用程序缺少第一行以下内容:
import 'zone.js/dist/zone-testing'
将其添加到src/test.ts
文件后,该错误消失了!
这可能比Tim的答案所建议的将所有这些js文件导入所有规范更好。