我正在使用以下代码模拟 ActivatedRoute 的参数值:
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
});
});
它仅在 should be valid 测试用例中给我以下错误。应该无效的测试用例按预期工作:
TypeError: Cannot read property 'subscribe' of undefined
at SafeSubscriber.route.params.subscribe.
我试过使用 stub 模拟 ActivatedRoute,使用主题作为参数的来源。
我希望这两个测试都能通过,因为它们都是空的,什么也不做。
最佳答案
我不确定为什么 useValue
不起作用,但我通常使用一个类来执行此操作:
class MockActivatedRoute {
params = of({
id: '1'
});
}
providers: [
{
provide: ActivatedRoute,
useClass: MockActivatedRoute
},
这有什么区别吗?
关于angular - 编写多个测试用例时,ActivatedRoute 参数在单元测试中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58483161/