I need to be able to mock the activated route parameters to be able to test my component.
Here's my best attempt so far, but it doesn't work.
{ provide: ActivatedRoute, useValue: { params: [ { 'id': 1 } ] } },
The ActivatedRoute is used in the actual component like this:
this.route.params.subscribe(params => {
this.stateId = +params['id'];
this.stateService.getState(this.stateId).then(state => {
this.state = state;
});
});
The error I get with my current attempt is simply:
TypeError: undefined is not a constructor (evaluating 'this.route.params.subscribe')
Any help would be greatly appreciated.
Your mock must reflect the object it's replacing. You .subscribe
because it returns an observable, not just the object, so your mock value should too:
import { Observable } from 'rxjs/Rx';
...
{ provide: ActivatedRoute, useValue: { 'params': Observable.from([{ 'id': 1 }]) } }