Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
850 views
in Technique[技术] by (71.8m points)

typescript - Angular jest component test with input formGroup throws "Cannot read property 'setParent' of undefined"

I have a child component that has a FormGroup input and will use registerControl in ngOnInit to add a FormArray. When executing a test with jest, the registerControl method throws the error

Cannot read property 'setParent' of undefined

This is a simplified example of the component:

@Component({
  selector: 'app-my-component',
  changeDetection: ChangeDetectionStrategy.OnPush,
  template: `
    <form [formGroup]="form">
      <!-- Form array and controls -->
    </form>
  `,
})
export class MyComponent implements OnInit {
  @Input() form: FormGroup | undefined;

  constructor(private fb: FormBuilder) {}

  ngOnInit(): void {
    if (this.form?.contains('myFormArray')) {
      this.form.removeControl('myFormArray');
    }
    this.form?.registerControl(
      'myFormArray',
      this.fb.array([
        this.fb.group({
          id: [null],
          someOtherProperty: [null],
        }),
      ]),
    );
  }
}

Whereas the test looks like this (I'm using Spectator, but I've tried with TestBed too):

describe('MyComponent', () => {
  let spectator: Spectator<MyComponent>;
  const createComponent = createComponentFactory({
    component: MyComponent,
    imports: [
      ReactiveFormsModule,
    ],
  });

  beforeEach(() => {
    spectator = createComponent({
      props: {
        form: new FormGroup({}),
      },
    });
  });

  it('should create', () => {
    expect(spectator.component).toBeTruthy();
  });
});

Any idea?

Thanks in advance

question from:https://stackoverflow.com/questions/65934188/angular-jest-component-test-with-input-formgroup-throws-cannot-read-property-s

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...