我正在使用以下代码来模拟ActivatedRoute的params值:
providers: [
{
provide: ActivatedRoute,
useValue: { params: of({id: 1})}
},
我的组件按如下方式使用ActivateRoute:
ngOnInit() {
this.route.params.subscribe(params => {
this.selectedId = +params['id'];
我的测试案例目前为空。 第一个成功,第二个失败。
describe('The VIS form', () => {
it('should be invalid', () => {
//Nothing here
});
it('should be valid', () => {
//Nothing here
});
});
仅在应该为有效测试用例的情况下,才给我以下错误。应该无效的测试用例可以按预期工作:
TypeError: Cannot read property 'subscribe' of undefined
at SafeSubscriber.route.params.subscribe.
我尝试使用存根(stub),将主题作为Params的来源来模拟ActivatedRoute。
我希望两个测试都能通过,因为它们都是空的,什么也不做。
答案 0 :(得分:0)
我不确定useValue
为什么不起作用,但是我通常使用一个类来做到这一点:
class MockActivatedRoute {
params = of({
id: '1'
});
}
providers: [
{
provide: ActivatedRoute,
useClass: MockActivatedRoute
},
有什么区别吗?