Jasmine 有没有一种方法可以定义多个测试的提供者、声明和导入

Jasmine 有没有一种方法可以定义多个测试的提供者、声明和导入,jasmine,angular6,karma-jasmine,Jasmine,Angular6,Karma Jasmine,我开始为我们的项目编写单元测试,因为某些原因,我们以前没有任何单元测试。我目前正在尝试通过默认测试,并且我必须定义一些导入、声明和提供程序。我们现在有44个组件/服务,在我处理的3个单元测试中,它们使用相同的导入、声明和提供者 我只是想知道是否有一种方法可以定义所有测试的导入、声明和提供者 it('should create', () => { expect(component).toBeTruthy(); }); 您可以使用一组常见依赖项创建测试模块,如下所示: @NgModule

我开始为我们的项目编写单元测试,因为某些原因,我们以前没有任何单元测试。我目前正在尝试通过默认测试,并且我必须定义一些导入、声明和提供程序。我们现在有44个组件/服务,在我处理的3个单元测试中,它们使用相同的导入、声明和提供者

我只是想知道是否有一种方法可以定义所有测试的导入、声明和提供者

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

您可以使用一组常见依赖项创建测试模块,如下所示:

@NgModule({
  // ...whatever you need
  providers: [
    { provide: Dependency, useClass: DependencyMock },
  ]
})
export class CommonTestingModule {
}
然后在测试中

beforeEach(() => {
  TestBed.configureTestingModule({
    imports: [
      CommonTestingModule,
      ...
    ],
  ...
  })
  ...
});

您可以为应用程序的某些部分创建更多的模块,这些模块可以在一些地方使用,类似于angular提供的模块,如
HttpClientTestingModule

您可以创建具有一组常见依赖项的测试模块,如下所示:

@NgModule({
  // ...whatever you need
  providers: [
    { provide: Dependency, useClass: DependencyMock },
  ]
})
export class CommonTestingModule {
}
然后在测试中

beforeEach(() => {
  TestBed.configureTestingModule({
    imports: [
      CommonTestingModule,
      ...
    ],
  ...
  })
  ...
});

您可以为应用程序的某些部分创建更多模块,这些模块可以在一些地方使用,类似于angular提供的模块,如
HttpClientTestingModule

欢迎使用SO!你能提供一些你目前拥有的(代码)和你尝试过的更多的例子吗?我的答案对你有帮助吗?或者你需要任何其他解释吗?欢迎来到这里!你能提供一些你目前拥有的(代码)和你尝试过的更多的例子吗?我的回答对你有帮助吗?或者你需要其他解释吗?嗨,谢谢,这非常有帮助,我有一些后续问题。首先,我在公共测试模块中添加了所有的声明、导入和提供程序,即使这些只使用了几次,这会影响到什么吗?这会减缓不需要这些配置的测试吗?。第二,当我尝试在providers中添加HttpHandler时,它告诉我类型“typeof HttpHandler”不可分配给类型“Provider”。我搜索了一下,发现有人说它包含在HttpClientModule中,然后我尝试了一下,但没有成功。您对此有什么想法吗?它可能会对构建时间产生一些影响,就像您在每个测试之前在
中放置
测试床一样。configureTestingModule
意味着它需要在每个测试之前运行配置。这就是为什么我建议在
CommonTestingModule
中保留所有地方都需要的最小值,并且只在特定情况下使用的任何东西都应该有单独的模块。第二,我认为
HttpHandler
是一个抽象类,不直接用于依赖项注入,因此您可能希望提供其派生类之一,如
HttpBackend
,它似乎被
HttpClientTestingModule
覆盖。您好,谢谢,这非常有用,我还有一些后续问题。首先,我在公共测试模块中添加了所有的声明、导入和提供程序,即使这些只使用了几次,这会影响到什么吗?这会减缓不需要这些配置的测试吗?。第二,当我尝试在providers中添加HttpHandler时,它告诉我类型“typeof HttpHandler”不可分配给类型“Provider”。我搜索了一下,发现有人说它包含在HttpClientModule中,然后我尝试了一下,但没有成功。您对此有什么想法吗?它可能会对构建时间产生一些影响,就像您在每个测试之前在
中放置
测试床一样。configureTestingModule
意味着它需要在每个测试之前运行配置。这就是为什么我建议在
CommonTestingModule
中保留所有地方都需要的最小值,并且只在特定情况下使用的任何东西都应该有单独的模块。第二,我认为
HttpHandler
是一个抽象类,不直接用于依赖项注入,因此您可能希望提供其派生类之一,如
HttpBackend
,它似乎被
HttpClientTestingModule
覆盖