注入间谍时出现 Angular TestBed.inject 类型错误

cod*_*in1 3 testing typescript angular

我想以与角度示例所示相同的方式将服务注入到 serviceSpy 中。角度 9 https://angular.io/guide/testing#service-tests

let masterService: MasterService;
let valueServiceSpy: jasmine.SpyObj<ValueService>;

beforeEach(() => {
const spy = jasmine.createSpyObj('ValueService', ['getValue']);

TestBed.configureTestingModule({
// Provide both the service-to-test and its (spy) dependency
providers: [
  MasterService,
  { provide: ValueService, useValue: spy }
]
});
// Inject both the service-to-test and its (spy) dependency
masterService = TestBed.inject(MasterService);
valueServiceSpy = TestBed.inject(ValueService);
});
Run Code Online (Sandbox Code Playgroud)

intellij 向我显示此错误 TS2322:类型“ValueService”不可分配给类型 SpyObj<ValueService>

有人可以帮忙吗?

小智 7

我有同样的问题。根据https://github.com/angular/angular/issues/35944你可以

valueServiceSpy = TestBed.inject(ValueService) as jasmine.SpyObj<ValueService>;
Run Code Online (Sandbox Code Playgroud)

它对我有用:)