首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Jest和Spectator对使用反应式表单作为输入的子组件进行单元测试时解决此错误?

如何使用Jest和Spectator对使用反应式表单作为输入的子组件进行单元测试时解决此错误?
EN

Stack Overflow用户
提问于 2019-05-27 23:55:41
回答 1查看 1.3K关注 0票数 2

我正在尝试为一个Angular组件编写一个基本的单元测试,它被用作子组件,并通过一个Input()从其父组件接收一个反应式表单。我正在尝试使用主机组件编写单元测试,以包装要测试的组件。我使用https://netbasal.gitbook.io/spectator/和Jest来编写我的测试。我不能让这个组件的最简单的测试工作,我猜问题与依赖有关。我已经在谷歌上搜索了很久,但我似乎找不到其他人遇到这个错误。

我试着在没有主机组件的情况下编写测试,但似乎也不起作用。

代码语言:javascript
复制
describe('ProjectFormComponent', () => {
  let host: SpectatorWithHost<ProjectFormComponent>;

const createHost = createHostComponentFactory<ProjectFormComponent>({
    component: ProjectFormComponent,
    imports: [
      CommonModule,
      ReactiveFormsModule,
      FontAwesomeModule,
      HttpClientTestingModule,
      RouterTestingModule,
      NgxErrorsModule,
      NgSelectModule,
      ToastrModule.forRoot(),
      MaterialImportsModule,
      FormsModule,
      SharedModule
    ],
    providers: [
      { provide: NgxErrorDirective, useValue: {} },
      { provide: APP_BASE_HREF, useValue: '/' },
      { provide: Store, useValue: {} },
      { provide: MAT_DATE_LOCALE, useValue: 'en-GB' },
      { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
      { provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS }
    ]
  });

test('ProjectFormComponent is created', inject([FormBuilder], (fb: FormBuilder) => {
    const mockForm = fb.group({
      name: ['', [Validators.required, Validators.maxLength(255)]]
    });

    host = createHost(`<app-project-form></app-project-form>`, false, { parent_form: mockForm });

    expect(host.component).toBeTruthy();

  }));
});

这是一个简单的测试,结果应该是阳性的。但是当我运行ng test时,我得到一个错误:当测试模块已经被实例化时,无法覆盖模块元数据。确保您在使用overrideModule之前没有使用inject

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-28 04:40:00

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56329225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档