我创建了一个导出bootstrap模式的组件:
@Component({
selector: 'app-modal',
templateUrl: './modal.component.html',
styleUrls: ['./modal.component.scss'],
exportAs: 'modal'
})
然后在父组件上我按如下方式使用它:
<app-modal #modalHandler="modal"></app-modal>
问题是当我使用NO_ERROR_SCHEMA为父组件编写单元测试时,karma失败并出现以下错误:
There is no directive with "exportAs" set to "modal"
只有在我将模态组件导入TestBed中的父组件后才会解析。
似乎NO_ERROR_SCHEMA并没有使这个错误无声。无论如何,如果不将子模态导入我的父母单元测试,我可以避免这个错误吗?
答案 0 :(得分:1)
只有在将模态组件导入父级后才会解析 TestBed中的组件。
应该导入。因为在TestBed中,您刚刚使用父组件创建了一个空模块。在执行此操作时,它还尝试编译和执行父模板。在那里它被视为
<app-modal #modalHandler="modal"></app-modal>
因此,它会查找一个被定义为导出为modal
的对象。
在测试用例中,由于您的模块为空并且未导入app-modal
,因此无法初始化您的父模板。
所以你需要
将模态组件导入TestBed中的父组件
这就是TestBed的工作原理。您需要导入以独立测试组件所需的内容。
注意:强>
通常我们使用以下行在spec fiel本身中创建一个测试模块。
TestBed.configureTestingModule({
});
因此,它不使用您的父组件所在的模块。而是在运行时创建测试模块。