angular - routerLinkActiveOptions 测试
问题描述
我似乎无法弄清楚如何为使用该[routerLinkActiveOptions]
指令的组件设置 *.component.spect.ts 文件。我不断收到此错误:
Can't bind to 'routerLinkActiveOptions' since it isn't a known property of 'button'.
这是规范文件:
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {RouterTestingModule} from '@angular/router/testing';
import {TranslatePipeMock} from '@common/services/translate/translate.pipe.mock';
import {NavigationComponent} from './navigation.component';
describe('NavigationComponent', () => {
let component: NavigationComponent;
let fixture: ComponentFixture<NavigationComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule,
],
declarations: [
NavigationComponent,
TranslatePipeMock,
],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(NavigationComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
解决方案
如果您想在此组件中测试指令,您可能需要查看https://codecraft.tv/courses/angular/unit-testing/directives/
但是假设您只想对您的组件进行单元测试,您应该在您的 TestBed 设置中设置模式:[NO_ERROR_SCHEMA] - 例如,只需在声明下方添加它
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule,
],
declarations: [
NavigationComponent,
TranslatePipeMock,
],
schemas: [NO_ERRORS_SCHEMA]
})
.compileComponents();
}));
如果您只想测试被测组件的行为,此架构允许编译器忽略丢失的指令或子组件。
发生错误是因为默认情况下单元测试会尝试解决所有使用的问题。由于该指令是在模板中设置的,但在您的 TestBed declerstuons 中找不到,编译器会抱怨。
实际上,官方文档非常详尽地涵盖了https://angular.io/guide/testing
推荐阅读
- php - 请任何人告诉我我如何解决这个问题。请帮助某人
- r - 如何在 R 中创建另一个表来计算差异?
- git - git commit 中的“删除模式 100644”是什么意思?
- javascript - 如何从用户那里获取颜色输入并相应地更改 WIX 元素的颜色?
- ruby-on-rails - 所见即所得编辑器未在 Ruby on Rails 上显示 TinyMCE
- c++ - 名称查找失败 - c++ 命名空间
- java - Spring Boot SSL 客户端-服务器通信
- sql - 如何提取存在重复字段值的值?
- ios - 在 OperationQueue(或替代 API,例如 PromiseKit、Combine Framework)中设置背压
- javascript - 在完整日历列表视图中访问事件信息