Estoy escribiendo una prueba para el servicio de inicio de sesión de mi aplicación y me gustaría simular una de las llamadas de servicio.
Este es mi código para la prueba:
describe('LoginService', () => { let service: LoginService; let mockSupabaseService: SupabaseService; beforeEach(() => { TestBed.configureTestingModule({}); mockSupabaseService = TestBed.inject(SupabaseService); service = TestBed.inject(LoginService); spyOn(mockSupabaseService, 'session').and.returnValue(of(null)); }); describe('isLoggedIn()', () => { it('should set login form', () => { const isLoggedIn = service.isLoggedIn(); expect(isLoggedIn).toEqual(true); }); }); });Este es el código para el servicio de inicio de sesión que estoy probando:
export class LoginService { constructor(private supabaseService: SupabaseService) {} isLoggedIn(): boolean { return !!this.supabaseService.session?.user; } }Este es el servicio que estoy tratando de simular:
export class SupabaseService { supabase: SupabaseClient; token: string | undefined | null; constructor() { this.supabase = createClient(environment.supabaseConfig.url, environment.supabaseConfig.key); } get session(): Session | undefined | null { return this.supabase.auth.session(); } } Por alguna razón spyOn(mockSupabaseService, 'session').and.returnValue(of(null)) se marca como no reconocido (arroja un error TS2345: Argument of type 'string' is not assignable to parameter of type 'never'. . Pero no creo que me esté burlando de la llamada get correctamente. ¿Cómo puedo hacer eso?