Угловое модульное тестирование Ошибка RouterLink TypeError: null не является объектом (оценка 'this.urlSerializer.serializer') - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть компонент, который отображает некоторое изображение и routerLink в теге aa.Теперь я не могу исправить тестовый пример для компонента, я удаляю routerLink из компонента Тестовый пример HTML проходит, я делюсь своим кодом и сообщаю, если требуется дополнительная информация.

Сообщение об ошибке:TypeError: null не является объектом (оценивается как this.urlSerializer.serializer)

<div  class="error-page">
  <div class="padding-bottom">
    <img role="button" class="img-fluid" alt="Infinity Insurance" src="/assets/KemperAuto-Infinity_Logo.png">
  </div>
  <div class="error-header my-3"><h1>{{'errorMessages.errorHeader' | translate}}</h1>
    <h3>{{'errorMessages.errorHeaderDescription' | translate}}</h3>
  </div>
  <div class="error-description my-5">
    <h1>Error Code: {{statusCode}}</h1>
    <h2>Trace Id: {{traceId}}</h2>
    <h3>{{"errorMessages."+ errorKey | translate}}</h3>
  </div>
  <div class="error-alternative">
    <h3>{{'errorMessages.errorAlternative' | translate}}</h3>
    <a [routerLink]="[checkEmptyString(location) ? '/' : location]" class="btn btn-primary p-3 mr-3"><i class="fas fa-sync"></i> {{'errorMessages.errorAlternativeOptionOne' | translate}}</a>
    <a href="mailto:support@infinity.com?subject=Internal Server Error Message" class="btn btn-secondary p-3"><i class="fas fa-envelope"></i> {{'errorMessages.errorAlternativeOptionTwo' | translate}}</a>
  </div>
</div>

файл теста

import {ComponentFixture, TestBed} from '@angular/core/testing';
import {ErrorPageComponent} from './error-page.component';
import {TranslateModule, TranslateService} from '@ngx-translate/core';
import {configureTestSuite} from "../../../../test/configuretest.spec";
import {ErrorService} from "../../../services/errorhandler/error.service";
import {ErrorPageModule} from "./error-page.module";
import {ModalModule} from "ngx-bootstrap";
import {Router, RouterModule} from "@angular/router";
import {MockRouter} from "../../../../test/classes/MockRouter";
import {RouterTestingModule} from "@angular/router/testing";


describe('ErrorPageComponent', () => {
  let component: ErrorPageComponent;
  let fixture: ComponentFixture<ErrorPageComponent>;
  const mockRouter = new MockRouter();
  configureTestSuite();
  beforeAll((done) => (async () => {
    TestBed.configureTestingModule({
      declarations: [],
      imports: [

        ModalModule.forRoot(),
        ErrorPageModule,
        RouterTestingModule.withRoutes([{ path: '/error', component: ErrorPageComponent }]),
        TranslateModule.forRoot(),
      ],
      providers: [
        ErrorService,
        {provide: Router, useValue: mockRouter},
        TranslateService
      ]
    })
      await TestBed.compileComponents();
  })().then(done).catch(done.fail));

  beforeEach(() => {
    fixture = TestBed.createComponent(ErrorPageComponent);
    component = fixture.componentInstance;
    component.ngOnInit();
    // component.location = '/';
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeDefined();
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...