使用Automerge包时Karma-Jasmine无法识别全部Angular单元测试
问题描述
使用Karma运行器时遇到异常:执行ng test命令无法识别全部单元测试。
复现步骤
已创建StackBlitz示例项目用于复现问题:
- 查看正常运行状态:执行以下命令
cd my-workspace ng test lib2
此时Karma页面会显示正常的测试结果。
2. 触发问题:取消lib2.component.ts中以下代码的注释,若页面未自动刷新则手动刷新或重新执行ng test lib2命令
const appState: App2State = { doc: Automerge.from({ name: 'test3', data: [], }), syncState: Automerge.initSyncState(), };
异常表现
- 有时会抛出错误:
Unhandled promise rejection: Error: 'describe' should only be used in 'describe' function - 有时仅未使用Automerge包的单元测试能正常运行(实际项目中多出现此情况)
- 移除所有Automerge相关调用(
from()、initSyncState())后,单元测试恢复正常,已排除缓存问题(已清理Angular和浏览器缓存)
更新补充
即使在组件中直接使用Automerge包,对应的单元测试也不会执行。另有StackBlitz示例项目可复现此场景:
取消app.component.ts中以下代码注释并执行ng test,Karma中无任何测试显示;注释该代码则能看到3个AppComponent单元测试:
const test = from({ test: 'test', });
已在Karma仓库提交Issue(编号#3836)
内容的提问来源于stack exchange,提问作者Parth Kheni
相关产品推荐
相关产品推荐

