Angular学习笔记68:Angular项目的单元测试 -- 对路由进行测试

对路由进行测试对于模版文件中有 的在TestBed.configureTestingModule()的元数据的imports数据一定要加上"RouterTestingModule";属于嵌套到组件中的其他组件,并不是单元测试的重点。第一种处理方式-为创建和声明一些测试桩(无关紧要的组件或指令处理方式相同)@Component({selector: 'router-outlet', te...
摘要由CSDN通过智能技术生成

对路由进行测试

对于模版文件中有 的

在TestBed.configureTestingModule()的元数据的imports数据一定要加上"RouterTestingModule";
属于嵌套到组件中的其他组件,并不是单元测试的重点。

第一种处理方式-为创建和声明一些测试桩(无关紧要的组件或指令处理方式相同)

@Component({
   selector: 'router-outlet', template: ''})
class RouterOutletStubComponent {
    }

这个RouterOutletStubComponent测试桩的选择器要和其对应的真实组件一致,但其模板和类是空的,然后在TestBed.configureTestingModule的declarations数组中配置

declarations: [
    BrowseComponent,
    RouterOutletStubComponent,
  ]

第二种处理方式-把 NO_ERRORS_SCHEMA 添加到 TestBed.schemas 的元数据中。

TestBed.configureTestingModule({
   
  declarations: [
    AppComponent,
    RouterLinkDirectiveStub
  ],
  schemas: [ NO_ERRORS_SCHEMA ]
})

这里的NO_ERRORS_SCHEMA 会要求 Angular 编译器忽略不认识的那些元素和属性,并且不会报错,Angular只会把它们渲染成空白标签,而浏览器会忽略这些标签。

两种方法可以同时使用

对于在类文件中有通过 'navigateByUrl()‘或’navigate()’ 方法来跳转路由

在类文件中有一个跳转的路由

this.route.navigateByUrl('/Login');

测试代码:

import {
   async, ComponentFixture, TestBed} from '@angular/core/testing';

import {
   BrowseComponent} from './browse.component';
import {
   NgZorroAntdModule} from 'ng-zorro-antd';
import {
   Router} from '@angular/router';

describe('BrowseComponent', () => {
   
  let component: BrowseComponent;
  let router: Router;
  let fixture: ComponentFixture<BrowseComponent>;
  const routerSpy = jasmine.createSpyObj('Router', ['navigateByUrl']);
  beforeEach(async(() => {
   
    TestBed.configureTestingModule({
   
      imports: [NgZorroAntdModule],
      declarations: [BrowseComponent],
      providers: [
        {
   provide: Router, useValue: routerSpy}
      ]
    })
      .compileComponents();
  }));

  beforeEach(() => {
   
    fixture = TestBed.createComponent(BrowseComponent);
    router = fixture.debugElement.injector.get(Router);
    component = fixture.componentInstance;
    fixture.detectChanges();
  
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值