У меня есть один базовый класс c, который я использую в каждом компоненте сетки.
Теперь у меня есть спецификации для компонента сетки, но я хочу добавить спецификации для базового класса в отдельный файл базы c.
Мотивом этого является удаление повторяющегося кода и создание универсального c spe c файла для базовой сетки, который будет обслуживаться для каждой сетки, использующей базовый класс.
Я застрял в одной точка, Я не могу создать спецификации внутри базового файла spe c. По сути, мне нужны все спецификации в базовом файле под одной функцией, и когда эта функция вызывается из подкласса с этим компонентом, она должна вернуть все спецификации для этого класса.
Вот что Я и то, что я пытался до сих пор.
Уровень компонента:
export class MyComponent extends BaseGrid<MyEntity> {
... (and all other code like constructor and methods)...
}
Базовый уровень:
export class BaseGrid<T> {
public async getData(): Promise<void> { ... }
}
... and 100 other functions
Характеристики компонентов :
describe('MyComponent ', () => {
let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [MyComponent],
imports: [
...
],
providers: [
],
}).compileComponents().then(() => {
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
});
}));
// here I created a reference function for my base class spec
// Now, This is working but I don't want this **describe** and **it** to be here,
// it should be in the base file. so I can remove this repetitive code from all components.
// And From here I just want to call one function let's say a **baseGridSpecs(component)**,
// that will load all the specs of base class in this component.
describe('Should initialize Base grid', () => {
it('should have proper component.', () => {
const baseGridSpecs = new BaseGridSpecs<MyComponent>();
baseGridSpecs.runBaseGridTests(component);
baseGridSpecs.checkGetDataDefined(component);
});
});
});
Базовые характеристики:
export class BaseGridSpecs<T> {
runBaseGridTests(component: any): void {
expect(component).toBeTruthy();
}
checkGetDataDefined(component: any): void {
expect(component.getData).toBeDefined();
}
}
Эта структура отлично работает для меня, , но с тех пор она бесполезна мои describe
и it
все еще находятся в файле основного компонента spe c.
То, чего я пытаюсь добиться, это просто вызвать функцию base spe c, такую как baseGridSpecs.runBaseGridTests(component);
, и он должен отображать все спецификации describe
и it
для данного компонента generi c.
Любая помощь будет очень признателен ...