Я пишу юнит-тесты для веб-приложения, которое содержит слишком много форм.Итак, для оптимизации кода я создаю одну общую функцию, которая будет возвращать функцию .Эта функция проверяет все предоставленные поля формы (подход ReactiveFroms), являются ли они обязательными или нет.
Функция, которая проверяет, являются ли поля обязательными или нет.
common-function.spec.ts:
export const componentTestFn = (formGroup: any, fields: Fields[], configurationOptions?) => () => {
describe('On required fields', () => {
beforeEach(() => {
if (configurationOptions) {
TestBed.configureTestingModule(configurationOptions)
.compileComponents();
}
});
fields.forEach(element => {
describe(element.name, () => {
it('should be a required field', () => {
let control = formGroup.get(element.formControlName);
if (element.nestedControl) {
control = control.get(element.nestedControl);
}
control.patchValue('');
expect(control.hasError('required')).toBeTruthy();
control.patchValue('Test');
expect(control.hasError('required')).toBeFalsy();
});
});
});
});
}
И я вызываю эту функцию из основного файла спецификаций с предложением description.
main.component.spec.ts:
describe('Given a Physical Property Setup Component', () => {
let component: PhysicalPropertySetupComponent;
let fixture: ComponentFixture<PhysicalPropertySetupComponent>;
let fields: Fields[] = [
new Fields('','field1','',''),
new Fields('','field2','',''),
new Fields('','field3','',''),
new Fields('','field4','','')
];
beforeEach(() => {
TestBed.configureTestingModule({
....
});
fixture = TestBed.createComponent(PhysicalPropertySetupComponent);
component = fixture.componentInstance;
});
describe('Testing',common.componentTestFn(component.formGroup,fields));
});
Но выдает ошибку «TypeError: Невозможно прочитать свойство formGroup of undefined».
Я думаю, это потому, что мы можем использовать только компонент и приспособлениезначение внутри it
предложения.Но я им не пользуюсь, потому что мой componentTestFn
заменит его.Точно так же, когда я вызываю эту функцию внутри it
, она отлично работает.
Кто-нибудь может сказать мне, как я могу получить это значение formGroup
в описании?Любая помощь будет оценена.
Спасибо заранее !!