Angular 角度服务';s属性为';t在创建时设置

Angular 角度服务';s属性为';t在创建时设置,angular,unit-testing,typescript,jasmine,Angular,Unit Testing,Typescript,Jasmine,我正在尝试测试以下角度(4.1)服务: 但是,我得到了一个错误: 无法读取未定义的属性“subscribe” 我真的不明白为什么它是未定义的,因为它应该在服务创建时设置 您需要将此行放入构造函数中 answer$ = this.answerSource.asObservable(); 保证在运行构造函数之前初始化answerSource主题如果不使用asObservable,它是否有效?我仍然得到相同的结果? beforeEach(() => { TestBed.confi

我正在尝试测试以下角度(4.1)服务:

但是,我得到了一个错误:

无法读取未定义的属性“subscribe”


我真的不明白为什么它是未定义的,因为它应该在服务创建时设置

您需要将此行放入构造函数中

answer$ = this.answerSource.asObservable(); 

保证在运行构造函数之前初始化answerSource主题

如果不使用
asObservable
,它是否有效?我仍然得到相同的结果?
  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [JobService]
    });
  });

  it('should emit $answer on answer()', inject([JobService], (service: JobService) => {
    service.answer$.subscribe(val => expect(val).toEqual('test123'));
    service.answer(('test123' as any))
  }));
answer$ = this.answerSource.asObservable();