请帮助在router.url usging angular上编写单元测试2.请查看以下代码以了解我的查询。
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
}
}
}
答案 0 :(得分:-1)
在单元测试中,我不会尝试修改“ 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);
然后导航到所需的网址:
router.navigate(['/search']);
您可能需要执行fixture.detectChanges();
来刷新组件,然后再执行其他任何操作。