вот в чем дело, как я могу выполнить юнит-тест для этой гвардии. Цель этого состоит в том, чтобы, если я прошел аутентификацию, затем вернул false и перенаправил на вход в систему, и если мы вернемся к входу в систему и если мы аутентифицировались до этого go на страницу профиля, если мы впервые регистрируемся, тогда go вперед, почему? потому что я не хочу go к этому маршруту (странице обратного вызова), в этом случае, который направляет свой обратный вызов от внешней службы (okta), это код защиты:
import { Injectable } from '@angular/core';
import { LoginMineService } from '../login/login-mine.service';
import { Router } from '@angular/router';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class LoginCheckGuard implements CanActivate {
constructor(private loginMineService: LoginMineService,
private router: Router,
) {
}
canActivate(): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
if (!this.loginMineService.isAuthenticated) {
return true;
} else {
this.router.navigate(['/login']);
return false;
}
}
}
, и это Код модульного теста:
import { TestBed } from '@angular/core/testing';
import { LoginCheckGuard } from './login-check.guard';
describe('LoginCheckGuard', () => {
let guard: LoginCheckGuard;
beforeEach(() => {
TestBed.configureTestingModule({});
guard = TestBed.inject(LoginCheckGuard);
});
it('should be created', () => {
expect(guard).toBeTruthy();
});
});
PS: я работаю над Angular 9, Спасибо вам всем