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