Реализация 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 и пройти этот тестовый пример. Пожалуйста, помогите мне в этом.

0 ответов

Другие вопросы по тегам