MockKAuth class

테스트용 Mock KAuth

실제 SDK 호출 없이 KAuth 동작을 시뮬레이션합니다. Widget 테스트나 유닛 테스트에서 사용하세요.

기본 사용법

final mock = MockKAuth();

// 로그인 성공 설정
mock.mockUser = KAuthUser(
  id: 'test_user_123',
  provider: AuthProvider.kakao,
  email: 'test@example.com',
);

final result = await mock.signIn(AuthProvider.kakao);
expect(result.success, true);

실패 시뮬레이션

final mock = MockKAuth();
mock.setNetworkError();

final result = await mock.signIn(AuthProvider.kakao);
expect(result.failure, isA<NetworkError>());

토큰 만료 시뮬레이션

final mock = MockKAuth.signedIn(user: testUser);
mock.expireAfter(Duration(seconds: 10));

// 10초 후 isExpired == true

호출 횟수 추적

final mock = MockKAuth();
await mock.signIn(AuthProvider.kakao);
await mock.signIn(AuthProvider.kakao);

expect(mock.signInCount, 2);
expect(mock.signInCountFor(AuthProvider.kakao), 2);

연속 실패 후 성공

final mock = MockKAuth();
mock.mockUser = testUser;
mock.failThenSucceed(times: 2);  // 2번 실패 후 성공

expect((await mock.signIn(AuthProvider.kakao)).success, false);
expect((await mock.signIn(AuthProvider.kakao)).success, false);
expect((await mock.signIn(AuthProvider.kakao)).success, true);

Constructors

MockKAuth({KAuthUser? mockUser, KAuthFailure? mockFailure, String? mockServerToken, Duration? delay, List<AuthProvider> mockConfiguredProviders = const [AuthProvider.kakao, AuthProvider.naver, AuthProvider.google, AuthProvider.apple]})
MockKAuth 생성
MockKAuth.demo({KAuthUser? user, bool signedIn = true, List<AuthProvider> configuredProviders = const [AuthProvider.kakao, AuthProvider.naver, AuthProvider.google, AuthProvider.apple]})
데모 모드로 생성
factory
MockKAuth.signedIn({required KAuthUser user, String? serverToken, DateTime? expiresAt, List<AuthProvider> configuredProviders = const [AuthProvider.kakao, AuthProvider.naver, AuthProvider.google, AuthProvider.apple]})
이미 로그인된 상태로 생성
factory

Properties

authStateChanges → Stream<KAuthUser?>
인증 상태 변화 스트림
no setter
avatar → String?
현재 사용자 프로필 이미지
no setter
configuredProviders → List<AuthProvider>
설정된 Provider 목록
no setter
currentProvider → AuthProvider?
현재 로그인된 Provider
no setter
currentUser → KAuthUser?
현재 로그인된 사용자
no setter
delay ↔ Duration?
지연 시간 (네트워크 지연 시뮬레이션)
getter/setter pair
email → String?
현재 사용자 이메일
no setter
expiresAt → DateTime?
토큰 만료 시간
no setter
expiresIn → Duration
토큰 남은 시간
no setter
hashCode → int
The hash code for this object.
no setterinherited
isExpired → bool
토큰이 만료되었는지 확인
no setter
isInitialized → bool
초기화 여부
no setter
isSignedIn → bool
로그인 여부
no setter
mockConfiguredProviders ↔ List<AuthProvider>
설정된 Provider 목록
getter/setter pair
mockFailure ↔ KAuthFailure?
Mock 실패 (설정하면 signIn 실패)
getter/setter pair
mockServerToken ↔ String?
Mock 서버 토큰
getter/setter pair
mockUser ↔ KAuthUser?
Mock 사용자 (설정하면 signIn 성공)
getter/setter pair
name → String?
현재 사용자 이름
no setter
refreshCount → int
refreshToken 총 호출 횟수
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
serverToken → String?
서버 토큰
no setter
signInCount → int
signIn 총 호출 횟수
no setter
signOutCount → int
signOut 총 호출 횟수
no setter
unlinkCount → int
unlink 총 호출 횟수
no setter
userId → String?
현재 사용자 ID
no setter

Methods

clearSession() → Future<void>
세션 삭제
dispose() → void
리소스 해제
expireAfter(Duration duration) → void
토큰 만료 시간 설정
expireNow() → void
토큰 즉시 만료
failThenSucceed({int times = 1, KAuthFailure? failure}) → void
N번 실패 후 성공하도록 설정
initialize({bool autoRestore = false}) → Future<void>
초기화
isConfigured(AuthProvider provider) → bool
Provider가 설정되어 있는지 확인
isExpiringSoon([Duration threshold = const Duration(minutes: 5)]) → bool
토큰이 곧 만료되는지 확인 (기본 5분 전)
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
refreshToken([AuthProvider? provider]) → Future<AuthResult>
토큰 갱신
reset() → void
상태 초기화
resetCounters() → void
모든 호출 카운터 초기화
setCancelled() → void
취소로 설정
setConfigError({String? message}) → void
설정 에러로 설정
setFailure({String? code, String? message, String? hint}) → void
실패로 설정
setNetworkError() → void
네트워크 에러로 설정
setSignedIn(KAuthUser user, {String? serverToken, DateTime? expiresAt}) → void
로그인 성공으로 설정
setSignedOut() → void
로그아웃 상태로 설정
setTimeout() → void
타임아웃 에러로 설정
setTokenExpired() → void
토큰 만료 에러로 설정
signIn(AuthProvider provider) → Future<AuthResult>
소셜 로그인
signInCountFor(AuthProvider provider) → int
특정 Provider의 signIn 호출 횟수
signInWithApple() → Future<AuthResult>
애플 로그인
signInWithGoogle() → Future<AuthResult>
구글 로그인
signInWithKakao() → Future<AuthResult>
카카오 로그인
signInWithNaver() → Future<AuthResult>
네이버 로그인
signOut([AuthProvider? provider]) → Future<AuthResult>
로그아웃
signOutAll() → Future<List<AuthResult>>
모든 Provider 로그아웃
signOutCountFor(AuthProvider provider) → int
특정 Provider의 signOut 호출 횟수
simulateAuthStateChange(KAuthUser? user) → void
상태 변경 이벤트 발생 (Widget 테스트용)
simulateTokenExpiry() → void
토큰 만료 이벤트 시뮬레이션 (Widget 테스트용)
toString() → String
A string representation of this object.
inherited
연결 해제

Operators

operator ==(Object other) → bool
The equality operator.
inherited