gpt4 book ai didi

angular - 使用 Karma 进行测试 - 无法绑定(bind)到 'routerLink',因为它不是的已知属性

转载 作者:搜寻专家 更新时间:2023-10-30 21:32:41 24 4
gpt4 key购买 nike

我刚开始在我的 Angular 6 应用程序中使用 Karma/Jasmine 进行测试,我需要一些帮助来解决我最常见的故障之一。

这是我模板中'RouterLink'的使用和配置。我在运行应用程序时没有错误,但在运行测试时,我收到错误:

Can't bind to 'routerLink' since it isn't a known property of 'a'.

我不能完全正确地配置我的规范文件。关于如何修复我的配置以在运行测试时修复该错误的任何想法?我不确定这是否是我的 app.module 文件、我的组件或测试文件的问题。

import { NavigationComponent } from '../navigation/navigation.component';
import { EditMonitoringPointComponent } from './edit-monitoring-point.component';
import { FormsModule, NgModel } from '@angular/forms';
import { RouterLink, RouterModule } from '@angular/router';
import { NgModule } from '@angular/core';

describe('EditMonitoringPointComponent', () => {
let component: EditMonitoringPointComponent;
let fixture: ComponentFixture<EditMonitoringPointComponent>;

beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ FormsModule],
declarations: [ EditMonitoringPointComponent, NavigationComponent],
providers: [ RouterModule, RouterLink],
// directives: [ROUTER_DIRECTIVES]

})
.compileComponents();
}));

beforeEach(() => {
fixture = TestBed.createComponent(EditMonitoringPointComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});

it('should create', () => {
expect(component).toBeTruthy();
});
});

这是它捕获的 html 中的行:

<a [routerLink]="['/sites', current_mp.siteId]" ><i class='fa fa-ban'></i> Cancel</a>

我的组件看起来像:

import { ActivatedRoute, ParamMap, Router, RouterModule, RouterLink } from '@angular/router';
import { SiteService } from '../../services/site.service'
import { MonitoringPointService } from '../../services/monitoring-point.service'
import { AuthService } from '../../services/auth.service'
import { DeviceService } from '../../services/device.service';
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';

@Component({
selector: 'app-edit-monitoring-point',
templateUrl: './edit-monitoring-point.component.html',
styleUrls: ['./edit-monitoring-point.component.css']
})

export class EditMonitoringPointComponent implements OnInit {
//declare variables
}

constructor(private router: Router, private monitoringPointService: MonitoringPointService, public dialog: MatDialog, private deviceService: DeviceService, public siteService: SiteService, private route: ActivatedRoute, private SiteService: SiteService, private authService: AuthService) { }

ngOnInit() {
...
}

应用程序模块.ts

import { NgModule } from '@angular/core';
import {
RouterModule} from '@angular/router';
import { AppRoutingModule, routingComponents } from './app-routing.module';
import { FormsModule } from '@angular/forms';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { AppComponent } from './app.component';

@NgModule({
declarations: [
AppComponent,
routingComponents],
imports: [
RouterModule,
BrowserModule,
AppRoutingModule,
FormsModule,
HttpClientModule,],
providers: [
{provide: HTTP_INTERCEPTORS,
useClass: UnauthorizedResponseInterceptor,
multi: true}]
})
export class AppModule { }
platformBrowserDynamic().bootstrapModule(AppModule);

Thank you so much!

最佳答案

您应该将 RouterTestingModule 添加到规范文件中的导入中。这应该允许 Angular 识别您的 routerLink 指令。同时清除提供者数组。

更多信息请引用本教程: https://codecraft.tv/courses/angular/unit-testing/routing/

此外,如果对“测试”组件内的路由不感兴趣,您可以简单地添加 NO_ERROR_SCHEMA到您的 configureTestingModule 方法。

schemas: [NO_ERRORS_SCHEMA]

关于angular - 使用 Karma 进行测试 - 无法绑定(bind)到 'routerLink',因为它不是的已知属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57033318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com