Невозможно переопределить MockStore - PullRequest
0 голосов
/ 13 марта 2020

Я использовал provideMockStore для модульного тестирования более чем одного селектора. Мне нужно переопределить MockStore для одного из тестовых случаев. Код выглядит следующим образом. Это не отменяет магазин. Я видел документацию там упоминается, что mockStore = TestBed.inject (MockStore). Выдает ошибку, которая гласит: «Свойство inject» не существует для типа «TestBedStati c» «@ angular / cli»: «~ 8.2.1», «@ ngrx / core»: «^ 1.2.0», "@ ngrx / Effects": "^ 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();
    }));

1 Ответ

0 голосов
/ 14 марта 2020

TestBed.inject - это функция angular 9.

Для angular 8 используйте TestBed.get.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...