角度2单位测试:" exportAs"没有指令

时间:2017-03-20 08:10:58

标签: angular karma-jasmine ng2-bootstrap

我创建了一个导出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并没有使这个错误无声。无论如何,如果不将子模态导入我的父母单元测试,我可以避免这个错误吗?

1 个答案:

答案 0 :(得分:1)

  

只有在将模态组件导入父级后才会解析   TestBed中的组件。

应该导入。因为在TestBed中,您刚刚使用父组件创建了一个空模块。在执行此操作时,它还尝试编译和执行父模板。在那里它被视为

<app-modal #modalHandler="modal"></app-modal>

因此,它会查找一个被定义为导出为modal的对象。

在测试用例中,由于您的模块为空并且未导入app-modal,因此无法初始化您的父模板。

所以你需要

  

将模态组件导入TestBed中的父组件

这就是TestBed的工作原理。您需要导入以独立测试组件所需的内容。

注意:

通常我们使用以下行在spec fiel本身中创建一个测试模块。

TestBed.configureTestingModule({
});

因此,它不使用您的父组件所在的模块。而是在运行时创建测试模块。