【发布时间】:2021-07-09 05:09:33
【问题描述】:
我尝试测试 EventEmitter 在角度服务中是否正确调用。但我有两个服务。
服务一号
public methodToTestInServiceOne(message: string) {
this.serviceTwo.methodInServiceTwo(message);
}
服务二
public onMessageStart = new EventEmitter();
public onMessageEnd = new EventEmitter();
public methodInServiceTwo(message: string): void {
this.onMessageStart.emit(message);
/* Code... */
this.onMessageEnd.emit(message);
}
单元测试服务一
describe("serviceOne", (): void => {
let serviceOne: ServiceOne;
let serviceTwo: ServiceTwo;
beforeEach((): void => {
TestBed.configureTestingModule({ providers: [] });
service = TestBed.inject(ServiceOne);
serviceTwo = TestBed.inject(ServiceTwo);
});
describe("methodToTestInServiceOne", (): void => {
it("should call EventEmmiter", (): void => {
let isMessageSend: boolean = false;
serviceTwo.onMessageEnd.subscribe((message: string): void => {
isMessageSend = true;
});
serviceOne.methodToTestInServiceOne("Hello World !");
expect(isMessageSend).toBeTruthy();
});
});
});
此代码不起作用,但如果我直接调用我的服务二。
serviceTwo.methodInServiceTwo("Hello World !")
测试有效! 请问,如何测试我的 EventEmitter 调用 serviceOne ?
【问题讨论】:
标签: angular unit-testing jasmine eventemitter angular-event-emitter