angular 2 单元测试:"exportAs" 没有指令
angular 2 unit test: There is no directive with "exportAs"
我创建了一个导出 bootstrap 模态的组件:
@Component({
selector: 'app-modal',
templateUrl: './modal.component.html',
styleUrls: ['./modal.component.scss'],
exportAs: 'modal'
})
然后在 parent 组件上,我按如下方式使用它:
<app-modal #modalHandler="modal"></app-modal>
问题是当我使用 NO_ERROR_SCHEMA 为 parent 组件编写单元测试时,karma 失败并出现以下错误:
There is no directive with "exportAs" set to "modal"
它仅在我将模态组件导入到 TestBed 中的 parent 组件后解决。
似乎 NO_ERROR_SCHEMA 没有消除这个错误。无论如何,我可以在不将 child 模态导入到我的 parents 单元测试的情况下避免此错误?
It resolves only after i import the modal component to the the parent
component in TestBed.
应该是导入的。因为在 TestBed 中,您刚刚使用父组件创建了一个空模块。在执行此操作时,它也会尝试编译和执行您的父模板。在那里它被定义为
<app-modal #modalHandler="modal"></app-modal>
因此它将查找定义为导出为 modal
的对象。
在测试用例中,因为您的模块是空的并且没有导入 app-modal
,所以您的父模板无法初始化。
所以你需要
import the modal component to the the parent component in TestBed
这就是 TestBed 的工作原理。您需要导入,这需要您独立测试您的组件。
注:
通常我们使用以下行在规范字段本身中创建一个测试模块。
TestBed.configureTestingModule({
});
所以它没有使用您的父组件所在的模块。相反,它是在 运行 时间内创建一个测试模块。
我创建了一个导出 bootstrap 模态的组件:
@Component({
selector: 'app-modal',
templateUrl: './modal.component.html',
styleUrls: ['./modal.component.scss'],
exportAs: 'modal'
})
然后在 parent 组件上,我按如下方式使用它:
<app-modal #modalHandler="modal"></app-modal>
问题是当我使用 NO_ERROR_SCHEMA 为 parent 组件编写单元测试时,karma 失败并出现以下错误:
There is no directive with "exportAs" set to "modal"
它仅在我将模态组件导入到 TestBed 中的 parent 组件后解决。
似乎 NO_ERROR_SCHEMA 没有消除这个错误。无论如何,我可以在不将 child 模态导入到我的 parents 单元测试的情况下避免此错误?
It resolves only after i import the modal component to the the parent component in TestBed.
应该是导入的。因为在 TestBed 中,您刚刚使用父组件创建了一个空模块。在执行此操作时,它也会尝试编译和执行您的父模板。在那里它被定义为
<app-modal #modalHandler="modal"></app-modal>
因此它将查找定义为导出为 modal
的对象。
在测试用例中,因为您的模块是空的并且没有导入 app-modal
,所以您的父模板无法初始化。
所以你需要
import the modal component to the the parent component in TestBed
这就是 TestBed 的工作原理。您需要导入,这需要您独立测试您的组件。
注:
通常我们使用以下行在规范字段本身中创建一个测试模块。
TestBed.configureTestingModule({
});
所以它没有使用您的父组件所在的模块。相反,它是在 运行 时间内创建一个测试模块。