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> - 카카오 로그인
- 네이버 로그인
-
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
-
unlink(
AuthProvider provider) → Future< AuthResult> - 연결 해제
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited