当前位置: 首页 > 知识库问答 >
问题:

角度测试失败,因为组件是两个模块声明的一部分

蒯翰墨
2023-03-14

我在Angular 4中创建了一些测试。我有一个组件正在使用PrettyJsonCompont,以便向用户显示格式良好的json。

当我运行ng test时,我的几个组件测试以相同的消息失败。

失败:类型PrettyJsonComponent是两个模块声明的一部分:PrettyJsonModule和DynamicTestModule!请考虑将PrettyJsonComponent移动到导入PrettyJsonModule和DynamicTestModule的更高模块。您还可以创建一个新的NgModule,该模块导出并包含PrettyJsonComponent,然后在PrettyJsonModule和DynamicTestModule中导入该NgModule。

以下是我的测试结果。

import {async, ComponentFixture, TestBed} from '@angular/core/testing';

import {ContentItemModalComponent} from './content-item-modal.component';
import {DialogService} from 'ng2-bootstrap-modal';
import {ContentItemService} from '../services/content-item.service';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {FroalaEditorModule, FroalaViewModule} from 'angular-froala-wysiwyg';
import {HttpModule} from '@angular/http';
import {MainModel} from '../models/main-model';
import {PrettyJsonComponent, PrettyJsonModule} from 'angular2-prettyjson';

describe('ContentItemModalComponent', () => {
  let component: ContentItemModalComponent;
  let fixture: ComponentFixture<ContentItemModalComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [
        ReactiveFormsModule,
        FormsModule,
        FroalaEditorModule.forRoot(),
        FroalaViewModule.forRoot(),
        HttpModule,
        PrettyJsonModule
      ],
      declarations: [ContentItemModalComponent, PrettyJsonComponent],
      providers: [
        DialogService,
        ContentItemService,
        MainModel
      ],
    })
      .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(ContentItemModalComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should be created', () => {
    expect(component).toBeTruthy();
  });
});

共有1个答案

笪德华
2023-03-14

问题在于configureTestingModule创建了一个新的角度模块。然后在其中声明组件PrettyJsonComponent。但是这个组件已经在导入的PrettyJsonModule中声明了。一个组件不能在两个模块中声明,这就是错误报告的内容。

要修复此问题,只需从configureTestingModule声明中删除PrettyJsonComponent

 类似资料:
  • 我的角应用程序正常运行时工作正常,但在我进行单元测试时似乎执行了两次(使用Karma 它的实例化如下: 浏览器控制台的输出如下: “在浏览器中运行的应用程序” "配置" “运行” 但是单元测试的输出如下: INFO [karma]: Karma v0.12.31 服务器在 http://localhost:9876/ 启动 [..因果报应/幻觉之类的..] 日志:“在浏览器中运行的应用程序” WA

  • 我正在使用什么 角 我想做的是 我有一个加载组件,我想在多个模块中重用 我做了什么 > 我创建了一个名为“加载覆盖”的新模块 在此模块中,我导出覆盖组件 我将此模块添加到app.module 将组件添加到多个模块时,我收到以下错误: 类型加载覆盖组件是两个模块声明的一部分:加载覆盖模块和项目模块!请考虑将加载覆盖组件移动到导入加载覆盖模块和项目模块的更高模块。您还可以创建一个新的NgMoules,

  • 我有一个测试类,有几个测试,都通过了。如果我将该类添加到测试套件中,则所有测试都会失败。 原因是无法解决对JavaFX类型的依赖关系。我使用了一个初始化JavaFX框架(例如应用程序线程等)的测试规则,这似乎可以正常工作,正如通过的测试所表明的那样。由于异常,测试失败: 为什么JUnit的行为会因我运行测试的方式而异?我怎样才能解决这个问题?请注意,这并不是针对so的GUI测试(我不想模拟用户操作

  • 我在一个项目中使用全方位。一切都很好。我遇到的问题是我不能测试项目,因为我不能启动TomEE,不管我使用什么方法(EJBContainer、Application ationComposer或Arquillian嵌入式)。 似乎Omniface有豆子问题什么的。我做了一个样本Maven项目https://bitbucket.org/zmirc/tomee-omnifaces-bug 你可以看到,我

  • Jenkins将良好的构建标记为失败,因为某些单元测试失败。如果我在没有单元测试的情况下运行构建,我将获得构建成功状态。如何配置Jenkins来执行以下操作:

  • 我一直在看视频和阅读文章,但这篇具体的文章让我很困惑,文章开头写道 Angular中的应用程序遵循模块化结构。Angular应用程序将包含许多模块,每个模块都专用于单一用途。通常,模块是一组内聚的代码,与其他模块集成以运行Angular应用程序。 模块从其代码中导出一些类、函数和值。组件是Angular的基本块,多个组件将构成您的应用程序。 一个模块可以是另一个模块的库。例如,作为主角度库模块的