Нет провайдера для MockClientService - PullRequest
0 голосов
/ 25 января 2019

Я создал поддельный сервис:

@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
}]);

} }

Это мой TestBed:

TestBed.configureTestingModule({
  imports: [FormsModule, TableModule, DialogModule, HttpClientModule, RouterTestingModule.withRoutes([
    { path: 'Orders', component: PlanOrderComponent },
    { path: 'plan-order-history', component: PlanOrderHistoryComponent }
  ])],
  declarations: [HeaderComponent, SubheaderComponent, PlanOrderComponent, FilterPlanOrderPipe,
    PlanOrderHistoryComponent],
  providers: [PlanOrderService, ToastsManager, ToastOptions,
    ConfirmationService, ViewContainerRef, DataServiceService, AppService]
}).overrideComponent(PlanOrderComponent, {
  set: {
    providers: [
      { provide: ClientService, useClass: MockClientService }
    ]
  }
});

Даже после внедрения MockClientService и получения ошибки: NullInjectorError: Нет поставщика для MockClientService

1 Ответ

0 голосов
/ 27 января 2019

Как уже упоминалось в комментариях, нет необходимости вызывать overrideComponent, вы можете просто предоставить фиктивный сервис в массиве providers следующим образом:

beforeEach(async(() => {
  TestBed.configureTestingModule({
    declarations: [ DummyComponent ],
    providers: [{
      provide: ClientService,
      useClass: MockClientService
    }]
  }).compileComponents();
}));

Я сделал небольшой стек, показывающий, как смоделировать сервис в подразделении тестовое задание здесь .

...