Сбой: Uncaught (в обещании): Ошибка: не может найти ни одного маршрута.Сегмент URL: «логин».Жасмин и Угловой 6 - PullRequest
0 голосов
/ 20 сентября 2018

Сообщество Я только начинаю играть с юнит-тестированием, и я настроил проект Angular 6 с Jasmine & karma для юнит-тестов.

по какой-то странной причине, я получаю эту ошибку, когда я RUN ng test Жасмин открывает новое окно браузера на http://localhost:9876/?id=34428211

enter image description here

Failed: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'login'
Error: Cannot match any routes. URL Segment: 'login'

Я на сетке .component.ts , где у меня нет какого-либо маршрута, который перенаправляет на страницу входа , ожидают службы аутентификации, которая проверяет, вошел ли пользователь в систему и истек ли токен пользователя, и только после этого я перенаправляю настраница входа.Это единственное возможное решение, которое я могу найти, может кто-нибудь объяснить мне, что я могу сделать, чтобы решить эту проблему.

Еще одна вещь, которую я хочу спросить вас, ребята, если мне нужно сделать какой-либо тест для приложения routing.module.ts , потому что я не проверяю никаких маршрутов.

grid-page.component.spec.ts

import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { NotificationsComponent } from '../../../components/ui/notifications/notifications.component';
import { MaterialModule } from '@app-modules/material.module.ts';
import { SidenavComponent } from '../../../components/ui/sidenav/sidenav.component';
import { HeaderComponent } from '../../../components/ui/header/header.component';
import { PlotToolbarComponent } from '../../../components/ui/plot-toolbar/plot-toolbar.component';
import { GridFiltersComponent } from '../../../pages/analytics/grid-page/components/grid-filters/grid-filters.component';
import { LoaderComponent } from '../../../components/loaders/loader/loader.component';
import { CalendarGridPlotComponent } from '../../../pages/analytics/grid-page/components/calendar-grid-plot/calendar-grid-plot.component';
import { RouterTestingModule } from '@angular/router/testing';
import { DropDownMenuComponent } from '../../../components/form_controls/drop-down-menu/drop-down-menu.component';
import { ReactiveFormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { GridPageComponent } from './grid-page.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientModule  } from '@angular/common/http';

describe('GridPageComponent', () => {
  let component: GridPageComponent;
  let fixture: ComponentFixture<GridPageComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [ MaterialModule, RouterTestingModule, ReactiveFormsModule, HttpModule, BrowserAnimationsModule, HttpClientModule ],
      declarations: [
        GridPageComponent, NotificationsComponent, SidenavComponent,
        HeaderComponent, PlotToolbarComponent, GridFiltersComponent,
        LoaderComponent, CalendarGridPlotComponent, DropDownMenuComponent
      ]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(GridPageComponent);
    component = fixture.componentInstance;
    // fixture.detectChanges();
  });

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

  // ===========================================================================
  // Variable specs
  // ===========================================================================

  fit('should spinnerLoader variable to be true', () => {
    expect(component.spinnerLoader).toBeTruthy();
  });

  fit('should barLoader variable to be true', () => {
    expect(component.barLoader).toBeTruthy();
  });

  fit('should isDarkTheme variable to be true', () => {
    expect(component.isDarkTheme).toBeFalsy();
  });

  fit('should sideNavState variable to be close', () => {
    expect(component.sideNavState).toBe('close');
  });

  fit('should form variable to be undefined', () => {
    expect(component.form).toBeUndefined();
  });


});

app-routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { AuthGuard } from './guards/auth.guard';


// PAGES

// STATUS PAGES
import { LoginComponent } from './pages/login/login.component';
import { Page404Component } from './pages/status/page404/page404.component';

import { DashboardComponent } from './pages/dashboard/dashboard.component';
import { InventoryComponent } from './pages/inventory/inventory.component';

import { LocationAnalyticsComponent } from './pages/analytics/location-analytics/location-analytics.component';
import { TimelinePageComponent } from './pages/analytics/timeline-page/timeline-page.component';
import { GridPageComponent } from './pages/analytics/grid-page/grid-page.component';
import { StoreSelectionPageComponent } from './pages/store-selection-page/store-selection-page.component';


import { SettingsComponent } from './pages/settings/settings.component';


export const routes: Routes = [

  { path: '',                     redirectTo: 'dashboard', pathMatch: 'full', canActivate: [AuthGuard] },
  { path: 'dashboard',            component: DashboardComponent, canActivate: [AuthGuard] },
  { path: 'login',                component: LoginComponent },

  { path: 'store-selection',      component: StoreSelectionPageComponent, canActivate: [AuthGuard] },
  { path: 'inventory',            component: InventoryComponent, canActivate: [AuthGuard] },

  { path: 'analytics/timeline',   component: TimelinePageComponent, canActivate: [AuthGuard] },
  { path: 'analytics/grid',       component: GridPageComponent, canActivate: [AuthGuard] },
  { path: 'analytics/location',   component: LocationAnalyticsComponent, canActivate: [AuthGuard] },

  { path: 'settings',             component: SettingsComponent, canActivate: [AuthGuard] },

  { path: '**',                   component: Page404Component }

];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

1 Ответ

0 голосов
/ 20 сентября 2018

Вы пытаетесь передать значение в URL-адресе, например

http://localhost:9876/?id=34428211

, и по умолчанию ulr составляет

{ path: '',                     redirectTo: 'dashboard', pathMatch: 'full', canActivate: [AuthGuard] },

, для которого вы применили canActivate: [AuthGuard] ANgular Auth gard, поэтому запрос идет поискГнездовой маршрут.и нет никакого маршрута, подобного вашему запросу? id = 34428211

, пожалуйста, попробуйте этот код
Ваш маршрут как этот

{ path: 'login:id',                component: LoginComponent },

url как этот

http://localhost:9876/login/34428211
...