Angular 角度,单元测试通过接口创建服务的组件

Angular 角度,单元测试通过接口创建服务的组件,angular,angular-unit-test,Angular,Angular Unit Test,给定这个在本地创建服务的组件 @Component({ <removed for clarity> providers: [ { provide: 'IMyService', useClass: MyService }, ] }) export class MyComponent implements OnInit, OnDestroy, AfterViewInit { constructor(private data: IMyServ

给定这个在本地创建服务的组件

@Component({
    <removed for clarity>
    providers: [
        { provide: 'IMyService', useClass: MyService },
    ]
})
export class MyComponent implements OnInit, OnDestroy, AfterViewInit
{
    constructor(private data: IMyService){}
}
注释掉的部分是我尝试过的东西

但我经常收到这个信息

Failed: Can't resolve all parameters for MyComponent: (?)

我遗漏了什么?

我想我找到了答案

正如评论所说,“这对我来说很有效。没有Inject,应用程序运行良好。但是,使用ng测试,似乎需要Inject。我使用的是Angular 6”


此外,您只需要在单元测试中使用overrideProvider,但是对于在组件范围中创建的提供者,您确实需要它

快速问题,但是MyService是否正确地用@Injectable注释了?请检查
IMyService
的导入。您是否从正确的路径导入?(1)MockMyService用@Injectable注释,这是我想要使用的服务(2)我确实尝试导入IMyService,但由于它在单元测试中被称为字符串,因此它在导入中没有使用(即,它是不同的颜色)NB。实际的组件可以工作,但单元测试不能
Failed: Can't resolve all parameters for MyComponent: (?)
constructor(
@Inject('IMyService') private data: IMyService,