【发布时间】:2020-03-14 20:59:24
【问题描述】:
我使用 provideMockStore 对多个选择器进行单元测试。我需要为其中一个测试用例覆盖 MockStore。代码如下。它不会覆盖商店。我看过那里的文档,提到mockStore = TestBed.inject(MockStore)。它会引发错误,显示“'TestBedStatic' 类型上不存在属性'inject' "@angular/cli": "~8.2.1", "@ngrx/core": "^1.2.0", "@ngrx/效果": "^8.2.0", "@ngrx/entity": "^8.2.0", "@ngrx/router-store": "^8.2.0", "@ngrx/schematics": "^8.2.0", "@ngrx/store": "^8.2.0",
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
RegisteredOwnerContainerComponent,
RegisteredOwnerComponent,
AddVehicleTitleComponent,
SidePanelContentComponent,
ExplanationComponent
],
imports: [
FlexLayoutModule,
FormsModule,
ReactiveFormsModule,
MaterialModule,
HttpClientTestingModule,
BrowserAnimationsModule,
LoggerModule.forRoot({ level: NgxLoggerLevel.INFO, disableConsoleLogging: false })
],
providers: [
{ provide: ActivatedRoute, useValue: mockActivateRoute },
{ provide: Router, useValue: mockRouter },
{
provide: EndorsementStateService,
useValue: {
navigateToNextStep: jasmine.createSpy('navigateToNextStep')
}
},
provideMockStore({
selectors: [
{ selector: currentPolicySelector, value: currentPolicy },
{ selector: currentVehicleSelector, value: currentVehicle }
],
}),
CookieService
],
}).compileComponents();
}));
beforeEach(async(() => {
fixture = TestBed.createComponent(RegisteredOwnerContainerComponent);
component = fixture.componentInstance;
mockedStore = TestBed.get(Store);
mockService = TestBed.get(EndorsementStateService);
// mockedStore.select = jasmine.createSpy('select');
}));
it('should return empty driver array if no PNI and SNI exist', fakeAsync(() => {
mockedStore.overrideSelector(currentPolicySelector, currentPolicyWithoutPNIAndWithoutSNI);
fixture.detectChanges();
}));
【问题讨论】: