我正在测试一个使用mat-table
的Angular 7组件,并且我定义了一个mock模块,该模块声明并导出一个mock-mat-row
组件,如下所示:
@Component({selector: 'mat-row', template: ''}) export class StubMatRowComponent {
@Input() public matRowDefColumns: string[];
}
模板中的用法如下:
<mat-row *matRowDef="let foo; columns: displayedColumns;"></mat-row>
使用此语法,我得到的错误是"无法绑定到‘matRowDefColumns’,因为它不是‘mat row’的已知属性。">
如果我不需要foo
,我可以这样写,它会起作用:
<mat-row matRowDef="displayedColumns"></mat-row>
有人知道我如何使用模板语法使mock工作吗?
顺便说一句,很明显,一个替代方案是,我可以导入真实的东西,而不是导入我的mock模块,但同样明显的是,出于测试目的,我更喜欢mock,而不是完全集成。
答案是因为matRowDef
是结构指令,而不是要绑定的属性,所以必须创建并导入模拟结构指令:
@Directive({
selector: '[matRowDef]'
}) export class StubMatRowDefDirective {
@Input() matRowDefColumns: string[];
}