javascript - 为什么我得到“ReducerManager 没有提供者!” 使用ngrx对延迟加载的Angular 6应用程序进行单元测试时出错?
问题描述
我有一个使用ngrx的延迟加载Angular 6 应用程序。我有一个:
app.module.ts
shared.module.ts
core.module.ts
核心模块有页脚和页眉之类的东西。这里没有与 store/ngrx 相关的东西,但是标头的单元测试(在实现 ngrx 之前工作)一直失败,并出现以下错误:
StaticInjectorError(Platform: core)[StoreFeatureModule -> ReducerManager]:
NullInjectorError: No provider for ReducerManager!
我能想到的唯一一件事StoreModule
是 没有导入CoreModule
. 但应该吗?当标头与状态无关时,为什么测试会失败?
app.module.ts
@NgModule({
declarations: [
AppComponent,
LoginComponent,
],
imports: [
BrowserModule,
AppRoutingModule,
CoreModule,
SharedModule.forRoot(),
StoreModule.forRoot({}),
EffectsModule.forRoot([]),
!environment.production ? StoreDevtoolsModule.instrument({
maxAge: 5 // retains last 5 states
}) : []
],
providers: [],
bootstrap: [ AppComponent ]
})
核心模块.ts
@NgModule({
imports: [
CommonModule,
],
exports: [
CommonModule,
HeaderComponent,
FooterComponent
],
declarations: [
HeaderComponent,
FooterComponent,
]
})
shared.module.ts
@NgModule({
imports: [
CommonModule,
HttpClientModule
],
exports: [
CommonModule,
MyComponent
],
declarations: [ MyComponent]
})
export class SharedModule {
** header.component.spec.ts**
describe('HeaderComponent', () => {
let component: HeaderComponent;
let fixture: ComponentFixture<HeaderComponent>;
let debugEl: DebugElement;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
ProductsModule,
CustomersModule
],
declarations: [ HeaderComponent ],
providers: [
{ provide: myService, useValue: new MyService() },
],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(HeaderComponent);
component = fixture.componentInstance;
debugEl = fixture.debugElement;
fixture.detectChanges();
});
解决方案
因为您的组件使用 NgRx 存储,所以您还必须在TestBed
.
推荐阅读
- elasticsearch - java.lang.IllegalStateException:可用处理器值 [3] 与当前值 [1] 不匹配
- javascript - 在运行时读取 VSTS 发布变量(TypeScript/Webpack SPA)
- tensorflow - TensorFlow shuffle 迭代器
- java - 正则表达式验证 3 个重复字符
- delphi - 如何删除加速键热键'&'字符?
- sql-server-2008 - 数据库恢复后 SSRS 登录失败
- c++ - 按升序/降序打印二项式堆的内容
- ansible - Ansible 检查主机在线 -> 如果不在线 -> 启动安装程序
- python - 使用 Selenium Python chrome webdriver 发布推文
- java - 如何获取特定于 Eclipse 变量的项目