Angular MockClientService没有提供程序

Angular MockClientService没有提供程序,angular,typescript,jasmine,karma-jasmine,karma-runner,Angular,Typescript,Jasmine,Karma Jasmine,Karma Runner,我创造了假服务: @Injectable() class MockClientService { CHAT_URL = ''; public planOrders = new Subject<PlanOrderModel[]>(); private subject: Rx.Subject<MessageEvent>; constructor() { this.planOrders.next([{ PlanDirective: 'Create Directive

我创造了假服务:

@Injectable()
class MockClientService {
 CHAT_URL = '';
 public planOrders = new Subject<PlanOrderModel[]>();
 private subject: Rx.Subject<MessageEvent>;

constructor() {
this.planOrders.next([{
  PlanDirective: 'Create Directive', Physician: 'REMOTE-RO', PlanPriority: 2,
  PlanNotes: '', PlanOrderId: 'Order_1', PatientDetails: { 'ID': '210598', 'Name': 'Ruffin Abdullah', 'AnonymizedID': '' },
  StructureSetID: 'CT_1', MachineID: 'Scanner Test', LastUpdated: '05/12/2018', DueDate: '05/12/2018', Status: '2',
  GatewayID: 0, selected: false, active: true
}]);
即使在注入MockClientService并获得错误后:
NullInjectorError:MockClientService没有提供程序

如评论中所述,无需调用
覆盖组件
,您只需在
提供程序
数组中提供模拟服务,如下所示:

beforeEach(async(() => {
  TestBed.configureTestingModule({
    declarations: [ DummyComponent ],
    providers: [{
      provide: ClientService,
      useClass: MockClientService
    }]
  }).compileComponents();
}));
我做了一个小的stackblitz,展示了如何在一个单元中模拟服务 测试


您不需要执行“overrideComponent”。只要使用{provide:ClientService,useClass:mockClientService}将您的mockClientService包含到提供者中,它就应该可以工作了。我也试过了。它给出了相同的错误,然后又给出了alsoRemove@Injectable()
beforeEach(async(() => {
  TestBed.configureTestingModule({
    declarations: [ DummyComponent ],
    providers: [{
      provide: ClientService,
      useClass: MockClientService
    }]
  }).compileComponents();
}));