【问题标题】:beforeEach dies without error on MockRender callbeforeEach 在 MockRender 调用中没有错误地死掉
【发布时间】:2021-05-19 07:32:13
【问题描述】:

我正在使用 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) {
      }
    }

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

【问题讨论】:

    标签: angular jasmine ng-mocks


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-16
      • 2020-12-03
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      相关资源
      最近更新 更多