我在测试具有 MdDialogRef 和注入服务的组件时遇到问题。我想测试这个组件是否正在调用注入的服务。问题是我无法用通常的方式检索服务
fixture = TestBed.createComponent(...);
component = fixture.componentInstance;
service = fixture.debugElement.injector.get(Service);
因为必须像这样检索具有注入 MDDialogRef 的组件:
dialog = TestBed.get(MdDialog);
dialogRef = dialog.open(CompanyLogoComponent);
component = dialogRef.componentInstance;
这是 MdDialogRef 的一种解决方法,它表示“没有可用于 MdDialogRef 的提供程序”,并且在提供需要许多参数时。(也许有更好的方法来做到这一点,然后使用夹具?)
因此,没有可用的夹具可用于使用 ...'debugElement.injector...' 检索服务
注入服务时,我有另一个范围,因为间谍没有反应:
it('method should call service', inject ([Service], (service: Service) => {
expect(service).toBeTruthy();
spyOn(service, 'method').and.callThrough();
component.methodCallingService();
expect(service.method).toHaveBeenCalled();
}));
知道如何将范围绑定到此处的组件或通过组件(dialogRef.componentInstance)检索服务吗?