beforeEach 在 MockRender 调用中没有错误地死去

beforeEach dies without error on MockRender call

我正在使用 ngMocks 测试一个组件,但我的规范一直失败,显示“formGroup 需要一个 FormGroup 类型的实例,请提供一个”。

我能够验证 component 实际上从未设置过。实际上,在我调用 MockRender 的标记行之后的每一行都没有在 beforeEach 中调用,因此未设置组件。

如您所见,我试图在组件中为 formGroup 提供一个默认值,以便在 MockRender 执行其操作时阻止问题发生,但这并没有改变任何事情。

知道 a) 我能做些什么来解决这个问题吗? b) 为什么在我的规范中 MockRender 而不是 expect 没有抛出错误?

规格:

    describe('CombinedMultiControlFormFieldComponent', () => {
      let component: CombinedMultiControlFormFieldComponent;
      let fixture;
      const mockDialog = {
        open() {
        }
      };
    
      beforeEach(async () => {
        return MockBuilder(CombinedMultiControlFormFieldComponent)
          .keep(MatFormFieldModule)
          .keep(FormsModule)
          .keep(ReactiveFormsModule)
          .mock(ConcatFormGroupValuesPipe)
          .provide({provide: MatDialog, useValue: mockDialog});
      });
    
      beforeEach(() => {
        fixture = MockRender(CombinedMultiControlFormFieldComponent); <-------------
        component = fixture.componentInstance;
        component.formGroup = fg;
        fixture.detectChanges();
      });
    
      it('should create', () => {
        expect(component).toBeTruthy();
      });
    });

TS:

    export class CombinedMultiControlFormFieldComponent {
    
      @Input()
      formGroup: FormGroup = new FormGroup({f1: new FormControl('')});
    
      @Input()
      displayLabel: string;
    
      constructor(private dialog: MatDialog) {
      }
    }

编辑:我在下面的答案中提供了修复,但我仍然不太明白为什么会出现错误。

仍然不太确定为什么会发生这种情况,但是通过在 MockRender 调用中提供 formGroup 作为参数,我能够消除错误。

    beforeEach(() => {
      fixture = MockRender(CombinedMultiControlFormFieldComponent, {formGroup: fg}); <-----
      component = fixture.componentInstance;
      fixture.detectChanges();
    });

我仍然很想学习如何正确使用 ngMocks。因此,如果有人能解释原因,请告诉我们:)