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();
}));