Angular 无法覆盖MockStore
我使用provideMockStore对多个选择器进行单元测试。我需要覆盖其中一个测试用例的MockStore。代码如下。它没有覆盖存储。我在那里看过文档,其中提到mockStore=TestBed.inject(mockStore)。它抛出读取“类型“TestBedStatic”上不存在属性“inject”的错误 “@angular/cli”:“~8.2.1”, “@ngrx/core”:“^1.2.0”, “@ngrx/effects”:“^8.2.0”, “@ngrx/entity”:“^8.2.0”, “@ngrx/路由器存储”:“^8.2.0”, “@ngrx/schematics”:“^8.2.0”, “@ngrx/store”:“^8.2.0”Angular 无法覆盖MockStore,angular,ngrx,Angular,Ngrx,我使用provideMockStore对多个选择器进行单元测试。我需要覆盖其中一个测试用例的MockStore。代码如下。它没有覆盖存储。我在那里看过文档,其中提到mockStore=TestBed.inject(mockStore)。它抛出读取“类型“TestBedStatic”上不存在属性“inject”的错误 “@angular/cli”:“~8.2.1”, “@ngrx/core”:“^1.2.0”, “@ngrx/effects”:“^8.2.0”, “@ngrx/entity”:“^
TestBed.inject
是一个角度9函数
对于angular 8,请使用
TestBed.get
谢谢您的回复。我尝试了mockedStore=TestBed.get(MockStore);但出现了一个错误:NullInjectorError:没有MockStore的提供程序!您无法从v8中的TestBed
获取MockStore
(这是一个bug)。您必须获取存储并将其强制转换到MockStore.TestBed.get(存储)作为Mockstore@timdeschryver这个问题有没有被追踪到?@ChrisPaton
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();
}));