Юнит-тесты сервиса с 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