请使用angular 2帮助编写router.url上的单元测试。请看下面的代码来理解我的问题。
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
}
}
}发布于 2018-08-21 20:43:16
在我的单元测试中,我并不是不想修改"router.url“,而是导航到想要的url。
为此,我使用了Angular的RouterTestingModule:
TestBed.configureTestingModule({
declarations: [MyComponentToTest, DummyComponent],
providers: [Location],
imports: [RouterTestingModule.withRoutes([{ path: 'search', component: DummyComponent },
{ path: 'dashboard', component: DummyComponent }])]
}).compileComponents();使用虚拟组件:
@Component({ template: '' })
class DummyComponent { }它使用两个模拟路由设置路由器。
然后,在测试中我恢复了路由器:
const router = TestBed.get(Router);
并导航到所需的url:
router.navigate(['/search']);
在执行任何其他操作之前,您可能需要执行fixture.detectChanges();以刷新组件。
https://stackoverflow.com/questions/47332956
复制相似问题