У меня есть метод, который проверяет, какой текущий URL-адрес, если URL-адрес '/', то он переходит на определенную страницу (/ test). Сам код работает, но у меня возникают проблемы с установкой URL в моих тестах, поэтому он проходит проверку «/». Когда я выхожу из консоли через URL, я получаю 'function () {...}' в моем тесте, но в браузере я получаю строку URL.
public determineLandingPage(): void {
console.log(this.router.url)
if (this.router.url == "/") {
this.router.navigate(["/test"]);
}
}
Тестовый файл ::
import { LandingPage } from './generate-landing-page';
import { RouterTestingModule } from '@angular/router/testing';
import { async, ComponentFixture, TestBed, inject } from '@angular/core/testing';
import * as TypeMoq from 'typemoq';
import { SpyLocation } from '@angular/common/testing';
import { Location, CommonModule } from '@angular/common';
import { Component } from '@angular/core';
@Component({
template: ''
})
class TestComponent {}
describe('LandingPage Tests', () => {
let routerMock : TypeMoq.IMock<Router>;
let service : LandingPage;
beforeEach( () => {
routerMock = TypeMoq.Mock.ofType<Router>();
TestBed.configureTestingModule({
imports: [
CommonModule,
RouterTestingModule.withRoutes([
{ path: '', component: TestComponent},
]),
],
declarations: [ TestComponent ],
providers: [{
provide: Router,
useFactory: () => {
return routerMock.object;
}
}
]
}).compileComponents();
service = new LandingPage(routerMock.object);
});
describe('determineLandingPage Tests', () => {
it('should navigate to test', async() => {
routerMock.setup(x => x.navigateByUrl('/'));
service.determineLandingPage();
routerMock.verify(x => x.navigate(TypeMoq.It.isValue(['/test'])), TypeMoq.Times.atLeastOnce());
});
});
});