this.mobilityService.currentMessage.subscribe не является функцией в angular модульном тестировании - PullRequest
0 голосов
/ 25 февраля 2020

В модульном тестировании кармы я получаю this.mobilityService.currentMessage.subscribe не является ошибкой функции

ниже приведен файл .ts, где я пытаюсь получить значения из другого компонента через службу

  constructor(private projectService: ProjectService, private teamService: TeamserviceService) {this.getData()}

getData(){
this.projectService.currentMessage.subscribe(data => {
  if(data!=null)
  {
    this.serviceName=data.service_object.serviceName;
    this.serviceId = data.service_object.id})

вот так выглядит мой сервисный код -

messageSource = new BehaviorSubject(null);
currentMessage = this.messageSource.asObservable();
getProjectList(messageSource: string[]) {
this.messageSource.next(messageSource);
}
 constructor(private http:HttpClient) {
 getAllProjectService(teamid,serviceid){
 return this.http.get(environment.TEST_AUTOMATION_ENDPOINT+'/api/projects-by-team-and-servicestore? 
teamId='+teamid+'&serviceStoreId='+serviceid+'&access_token='+this.decaccesstoken);
 }
 }

Мой .spe c файл Я создаю такой шпионский объект, как этот -

  const mockProjectService= jasmine.createSpyObj('projectService', ['getAllProjectService','currentMessage']);

Поскольку currentMessage не является методом внутри службы, я получаю эту ошибку. Любая идея, как подписаться на переменную внутри службы?

1 Ответ

1 голос
/ 25 февраля 2020

Измените код услуги на:

messageSource = new BehaviorSubject(null);

currentMessage() {
    return this.messageSource.asObservable();
}
getProjectList(messageSource: string[]) {
      this.messageSource.next(messageSource);
}
 constructor(private http:HttpClient) {
 getAllProjectService(teamid,serviceid){
       return this.http.get(environment.TEST_AUTOMATION_ENDPOINT+'/api/projects-by-team- 
       and-servicestore?teamId='+teamid+'&serviceStoreId='+serviceid+'&access_token='+this.decaccesstoken);
 }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...