首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在angular 2中为router.url编写单元测试

如何在angular 2中为router.url编写单元测试
EN

Stack Overflow用户
提问于 2017-11-16 23:04:30
回答 1查看 1.2K关注 0票数 5

请使用angular 2帮助编写router.url上的单元测试。请看下面的代码来理解我的问题。

代码语言:javascript
复制
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
    selector: 'app-about',
    templateUrl: './app-about.component.html',
    styleUrls: ['./app-about.component.scss']
})
export class AboutComponent implements OnInit {
    constructor(private router: Router) {
        if (this.router.url.includes('home')) {
            ...some functions
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-08-21 20:43:16

在我的单元测试中,我并不是不想修改"router.url“,而是导航到想要的url。

为此,我使用了Angular的RouterTestingModule:

代码语言:javascript
复制
TestBed.configureTestingModule({
  declarations: [MyComponentToTest, DummyComponent],
  providers: [Location],
  imports: [RouterTestingModule.withRoutes([{ path: 'search', component: DummyComponent },
    { path: 'dashboard', component: DummyComponent }])]
  }).compileComponents();

使用虚拟组件:

代码语言:javascript
复制
@Component({ template: '' })
class DummyComponent { }

它使用两个模拟路由设置路由器。

然后,在测试中我恢复了路由器:

const router = TestBed.get(Router);

并导航到所需的url:

router.navigate(['/search']);

在执行任何其他操作之前,您可能需要执行fixture.detectChanges();以刷新组件。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47332956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档