Юнит-тесты сервиса с extends

Тестируемый сервис:

export class FieldsService extends Base{
 constructor(protected panelFields: PanelFieldService) {
   super(panelFields);
 }

 getConfig(panelInfo: any): MapPanelField[] {
   return [
     ...super.getConfig(panelInfo),
     {
       value: 'energyFactor',
       label: 'Energy Factor:',
       pipes: [{ token: 'customNumber' }, { token: 'unit', args: 'kcal/m³' }],
       dataSource: this.panelFields.getField('energyFactor', panelInfo.data),
     },
   ];
 }
}

extends сервис:

export abstract class Base {
 constructor(protected panelFields: PanelFieldService) {}

 getConfig(panelInfo: any): MapPanelField[] {
   return [
     {
       value: [
         {
           name: 'burden',
           pipes: [{ token: 'digit' }],
         },
         {
           name: 'spacing',
           pipes: [{ token: 'digit' }, { token: 'unit', args: 'm' }],
         },
       ],
       label: 'Burden x Spacing:',
       joinBy: ' x ',
       dataSource: {
         ...this.panelFields.getField('burden', panelInfo.data),
         ...this.panelFields.getField('spacing', panelInfo.data),
       },
       pipes: [],
     },
   ];
 }
}

метод getField из сервиса PanelFieldService:

getField(fieldName: string, panelInfo: any): any {
 return { [fieldName]: panelInfo[fieldName] };
}

Spec.ts:

class BaseStub {
 getConfig(): any {
   return {
     dataSource: { burden: 8.1, spacing: 9.3 },
     joinBy: ' x ',
     label: 'Burden x Spacing:',
     pipes: [],
     value: [
       { name: 'burden', pipes: [{ token: 'digit' }] },
       {
         name: 'spacing',
         pipes: [{ token: 'digit' }, { token: 'unit', args: 'm' }],
       },
     ],
   };
 }
}

fdescribe('FieldsService', () => {
 let service: FieldsService;
 let panelServiceSpy: jasmine.SpyObj<PanelFieldService>;

 const panelInfo = {
   data: {
     filename: 'EVO_BRIDGE2_1515(1).dxf',
     burden: 8.1,
     spacing: 9.3,
     energyFactor: 396,
   },
 };

 const mapPanelConfig = [
   {
     dataSource: { burden: 8.1, spacing: 9.3 },
     joinBy: ' x ',
     label: 'Burden x Spacing:',
     pipes: [],
     value: [
       { name: 'burden', pipes: [{ token: 'digit' }] },
       {
         name: 'spacing',
         pipes: [{ token: 'digit' }, { token: 'unit', args: 'm' }],
       },
     ],
   },
   {
     dataSource: { energyFactor: 396 },
     label: 'Energy Factor:',
     pipes: [
       { token: 'customNumber' },
       { token: 'unit', args: 'kcal/m³' },
     ],
     value: 'energyFactor',
   },
 ];

 beforeEach(() => {
   const spy = jasmine.createSpyObj('PanelFieldService', ['getField']);
   TestBed.configureTestingModule({
     providers: [
       FieldsService,
       { provide: PanelFieldService, useValue: spy },
       { provide: Base, useClass: BaseStub}
     ],
   });

   service = TestBed.inject(FieldsService);
   panelServiceSpy = TestBed.inject(PanelFieldService) as jasmine.SpyObj<PanelFieldService>;
 });

 it('should be created', () => {
   expect(service).toBeTruthy();
 });

 describe('getConfig', () => {
   it('test', () => {
     panelServiceSpy.getField.and.returnValue({energyFactor: 396});
    expect(service.getConfig(panelInfo)).toEqual(mapPanelConfig);
   });
 });
});

Ошибка :

Expected $[0].dataSource to have properties burden: 8.1 spacing: 9.3 Expected $[0].dataSource not to have properties energyFactor: 396


Ответы (0 шт):