Реализация Mock не работает в Angular с использованием Jasmine
Я новичок в структуре Jasmine, я не мог вызвать свою фиктивную функцию. Я добавил свой код ниже, дайте мне знать о возможном подходе к вызову моих функций.
компонент 1: переменная функции будет установлена, когда userServcieSubject вызовет событие подписки.
Угловой component.ts
export class Component1 {
constructor(private ds: DS, private userService: UserService) { }
feature$: Observable<FModel>;
ngOnInit(){
this.userService.userServcieSubject.subscribe(u => {
if(u === 'something'){
this.feature= this.ds.getData()
}
}
}
}
export class userService{
userServcieSubject = new Subject();
}
export class Component2(){
constructor(ds: DS, userService: UserService)
onNgInit(){
this.ds.getData<User>().subscribe( u => {
this.userService.userServcieSubject.next(u)
})
}
}
DS :
export class DS{
getData(){
some http call here
}
}
Тестовый пример для component1: component1.spec.ts
describe('Compoent1', () => {
let component: Component1;
describe('Component1', () => {
it('should call Get Data', () => {
const service: DS = TestBed.get(DS);
const spy = jest.spyOn(service, 'getData').mockImplementation(() => {
const obj = {
some Json value
};
return of(obj);
});
component.ngOnInit();
expect(spy).toHaveBeenCalled();
})
})
При запуске тестового примера "следует вызвать Get Data" происходит сбой, я понимаю, что я подписал userInfoSubject(this.userService.userServcieSubject) на функцию ngInit компонента 1, поэтому мой тестовый пример терпит неудачу. Теперь мне нужно знать, как установить значение для userInfoSubject и пройти этот тестовый пример. Пожалуйста, помогите мне в этом.