在进行Angular单元测试时,如果需要订阅ActivatedRoute路由参数的变化,可以使用下面的代码示例:
import { ActivatedRoute } from '@angular/router';
import { of } from 'rxjs';
describe('Component', () => {
let component: Component;
let route: ActivatedRoute;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [Component],
providers: [
{
provide: ActivatedRoute,
useValue: {
params: of({ id: 1 })
}
}
]
});
route = TestBed.inject(ActivatedRoute);
component = TestBed.createComponent(Component).componentInstance;
});
it('should get the correct parameter value', () => {
component.ngOnInit();
expect(component.id).toBe(1);
});
});
在上述示例中,通过将ActivatedRoute提供为测试时的模拟对象来替换原始的ActivatedRoute。这个模拟对象包含一个params属性,该属性是一个可观察对象,它提供了包含id参数的对象。然后,我们创建了需要测试的组件,并将我们刚刚创建的模拟对象注入到该组件中。
在测试用例中,我们调用了组件的ngOnInit函数来订阅参数的变化,并且使用expect函数来测试组件是否获得了正确的参数值。