加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular2单元测试错误:无法绑定到’routerLink’,因为它不是’a

发布时间:2020-12-17 17:28:06 所属栏目:安全 来源:网络整理
导读:我正在尝试使用单元测试(karma,jasmine)进行管理,我遇到了错误: Can’t bind to ‘routerLink’ since it isn’t a known property of ‘a’ 我甚至没有更改由angular-cli创建的* .spec.ts文件… 这是我的文件: 用户list.component.html ul li *ngFor="let
我正在尝试使用单元测试(karma,jasmine)进行管理,我遇到了错误:

Can’t bind to ‘routerLink’ since it isn’t a known property of ‘a’

我甚至没有更改由angular-cli创建的* .spec.ts文件…

这是我的文件:

用户list.component.html

<ul>
  <li *ngFor="let user of users">
    <a [routerLink]="user._id" (click)="userClicked(user)">{{user.fullName}}</a>
  </li>
</ul>

<router-outlet></router-outlet>

用户list.component.ts

import { Component,OnInit } from '@angular/core';
import { Router } from '@angular/router';

import { IUser,User } from '../../../interfaces/user';
import { UsersService } from '../../../services/users.service';

@Component({
  selector: 'app-user-list',templateUrl: './user-list.component.html',styleUrls: ['./user-list.component.css']
})
export class UsersListComponent implements OnInit {

  users: IUser[] = [];

  constructor(private usersService: UsersService,private router: Router) { }

  ngOnInit() {
    this.usersService.getAll()
      .subscribe(users => {
        this.users = users.sort(...).map(...);
      });

  }

  userClicked(user) {
    this.usersService.setCurrentUser(user);
  }

  clickXBtn(user) {
    this.usersService
        .deleteUser(user)
        .subscribe(...);
  }

}

用户list.component.spec.ts

/* tslint:disable:no-unused-variable */
import { async,ComponentFixture,TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';

import { UsersListComponent } from './user-list.component';

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

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ UsersListComponent ]
    })
    .compileComponents();
  }));

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

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

我应该改变什么?如何使它工作?

解决方法

可能重复 Angular 2 Jasmine Can’t bind to ‘routerLink’ since it isn’t a known property of ‘a’

要解决您的问题,请尝试存根RouterLink
https://angular.io/docs/ts/latest/guide/testing.html#!#router-link-stub

@Directive({
  selector: '[routerLink]',host: {
    '(click)': 'onClick()'
  }
})
export class RouterLinkStubDirective {
  @Input('routerLink') linkParams: any;
  navigatedTo: any = null;

  onClick() {
    this.navigatedTo = this.linkParams;
  }
}

并在测试中使用存根的RouterLink

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读