Измените подписку на:
this.route.data.subscribe(data => {
console.log('in route subscription);
this.store.patchState(data)
});
Если вы не видите console.log('in route subscription')
, возможно, вы не правильно насмехаетесь над activatedRoute
.
Попробуйте это :
describe('xyzComponent', () => {
let store: Store<...>; // for you to fill out
let component: xyzComponent;
let fixture: ComponentFixture<xyzComponent>;
let data$ = new BehaviorSubject({ x: 1 }); // mock data for activatedRoute
beforeEach(async() => {
TestBed.configureTestingModule({
imports: [ StoreModule.forRoot(....) ], // for you to fill out
declarations: [ XYZComponent ],
providers: [
{ provide: ActivatedRoute, useValue: { data: data$ } },
],
}).compileComponents();
});
beforeEach(() => {
store = TestBed.get(store);
spyOn(store, 'patchState').and.callThrough(); // and.callThrough() is optional, do you want it to HAVE both a spy and call the actual implementation?
fixture = TestBed.createComponent(xyzComponent);
component = fixture.componentInstance;
fixture.detectChanges(); // this fixture.detectChanges() will call `ngOnInit` for us, so we don't have to manually call it
});
it('ngOnInit should call patchState', () => {
expect(store.patchState).toHaveBeenCalledWith({ x: 1 });
});
});
Надеюсь, это поможет вам разблокироваться. Вы также можете изменить route.data
в последующих тестах и посмотреть, как он отреагирует, выполнив data.next$({....})
ваше будущее значение.