我有一个组件,在构造函数中,我订阅了一个事件。
我通过活动服务发送活动
import {Injectable} from '@angular/core';
import {Observable} from "rxjs/Observable";
import {Subject} from "rxjs/Subject";
@Injectable ()
export class EventService {
private sendSource = new Subject<string> ();
sendMessage (message: string) {
this.sendSource.next (message);
}
getMessage (): Observable<any> {
return this.sendSource.asObservable ();
}
}
组件构造器:
constructor (private eventService: EventService) {
this.subscription = this.eventService.getMessage()
.subscribe (message => {
this.menu = message;
});
}
.spec文件:
it ('should receive event', async (() => {
eventService = new EventService ();
eventService.sendMessage ('test');
fixture.detectChanges ();
fixture.whenStable ().then (() => {
expect (component.menu).toBeEqual('test');
});
}));
我的问题:发送活动时this.menu
属性不会改变。
有人可以在推理中解释我的错误吗? 提前谢谢。
答案 0 :(得分:0)
您在测试中实例化服务,但是在哪里/如何将其注入组件?我怀疑你使用了不同的实例。
如果您已在TestBed配置中将服务添加为提供者,则可以使用注入器获取该实例:
const eventService = fixture.debugElement.injector.get(EventService);
然后你可以调用sendMessage方法,你应该在组件中得到一些东西。