Подписка на тестирование жасмина на уровне обслуживания, наблюдаемом от OnInit Angular - PullRequest
2 голосов
/ 20 марта 2020

Я работаю над тестированием компонента, у которого есть подписка в методе ngOnInit. Работает нормально при работе в «диком», но тестирование не проходит, так как нет доступного объекта подписки Я попытался создать заглушку sv c для построения наблюдаемого объекта в моем модульном тесте, но не могу заставить его работать.

Вот мой код обслуживания и компонентов (abrv):

Компонент

  ngOnInit() {
   this.userSvc.user.subscribe(user => {
    this.currentUser = user; //-- this.userSvc.user (which is an observable on that class) is available in the wild, but not when testing
   })
  }

UserService

  //-- User Subscribe items
  userSubject: BehaviorSubject<any> = new BehaviorSubject(null);
  user = this.userSubject.asObservable(); // this is the property I'm subscribing to which gets set after login.

Вот мои настройки теста

//SvcStub
const usrSvcStub = {
 user : {
  FirstName: "Test",
  LastName: "User",
  Username: "testuser"
 }
}

//Providers Config
 providers: [
    {provide: UserService, useValue: {usrSvcStub}}
   ]

Когда тест при запуске отладки я вижу, что он загружает мой "StubSv c", но пользователь не определен, и я не могу подписаться на него. Может ли кто-нибудь указать мне правильное направление? Приведенный ниже экран ie показывает, когда он загружает функцию компонента ngOnInit и подписывается на наблюдаемую услугу.

enter image description here

1 Ответ

1 голос
/ 20 марта 2020

Можете ли вы попробовать

const usrSvcStub = {
 user : new BehaviorSubject<any>({
  FirstName: "Test",
  LastName: "User",
  Username: "testuser"
 })
}

...