Angular 没有带“的指令;exportAs";设置为";cdkStep";

Angular 没有带“的指令;exportAs";设置为";cdkStep";,angular,unit-testing,jasmine,karma-jasmine,angular-cdk,Angular,Unit Testing,Jasmine,Karma Jasmine,Angular Cdk,在我的规范中,我从karma/jasmin那里得到了这个错误: 没有将“exportAs”设置为“cdkStep”的指令 这是测试床配置: TestBed.configureTestingModule({ declarations: [ StepsComponent ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }).compileComponents(); 总的来说,我的代码与这个Stackblitz示例非常相似:

在我的规范中,我从karma/jasmin那里得到了这个错误:

没有将“exportAs”设置为“cdkStep”的指令

这是测试床配置:

    TestBed.configureTestingModule({
        declarations: [ StepsComponent ],
        schemas: [CUSTOM_ELEMENTS_SCHEMA]
    }).compileComponents();
总的来说,我的代码与这个Stackblitz示例非常相似:

我知道这个问题在这里已经被问过多次了,但是没有一个是关于“cdkStep”的。

有人知道我错过了什么吗?该组件工作正常-只是我无法得到一个简单的
expect(component.toBeTruthy()获得成功。

您的组件依赖于
cdk步骤
组件,一旦您将
CdkStepperModule
导入该组件,该组件将在
测试床
中可用

由于情况并非如此,angular在遇到
cdk step
标记时不会创建
CdkStep
的实例,因为关联未注册。因此,您将无法将这些模板变量绑定到
CdkStep
的实例,因为这样的实例根本不存在

通常,angular会在遇到未知/自定义标记时通过抛出典型的
来抱怨某些组件不是angular组件
,但由于您使用的是
自定义元素模式
,因此跳过此检查

要使用
cdk步骤
选择器注册
cdk步骤
,您需要将设置重构为:

import { CdkStepperModule} from '@angular/cdk/stepper';
...
TestBed.configureTestingModule({
    imports: [CdkStepperModule],
    declarations: [StepsComponent]
}).compileComponents();

您可以添加您的
测试床
设置吗?添加了测试床设置!如果我导入CdkStep类,我会遇到另一个错误(导入了意外的指令“CdkStep”[…]),这不仅要感谢该解决方案,还要感谢您对它进行了如此广泛的解释,我现在明白了:-)
    TestBed.configureTestingModule({
        declarations: [ StepsComponent ],
        schemas: [CUSTOM_ELEMENTS_SCHEMA]
    }).compileComponents();
import { CdkStepperModule} from '@angular/cdk/stepper';
...
TestBed.configureTestingModule({
    imports: [CdkStepperModule],
    declarations: [StepsComponent]
}).compileComponents();