inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Flutter 중급 1편 - 클린 아키텍처

24 Sqflite Test 코드 작성

sqflite Test 코드 작성

357

Sprint Inc.

작성한 질문수 4

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
안녕하세요, 오준석님.
24강에서 Sqflite Test 코드를 작성하는 부분에서 질문이 생겨서 질문 남깁니다.
 
/di/provider_setup.dart 부분에서 openDatabase를 실행하셨는데, 이 부분이 singleton으로 하신걸까요..?
 
저는 오준석님이 강의하신것을 바탕으로 제 스타일로 한번 변형 해보고 있는데요, 저는 sqfLiteDatabase를 클래스로 따로 빼서 singleton으로 만들어 보고 있는데 테스트 코드에서
final db = await databaseFactoryFfi.openDatabase(inMemoryDatabasePath);
이 부분을 어떻게 적용해야 될지 감이 잘 안와서 질문 남깁니다.
 
오준석님이 lib/di/provider_setup.dart에서 하신 부분이 singleton으로 구현하신게 맞으신가요?
-> 이게 가장 궁금하고, 아니라면 singleton으로 하지 않으신 이유도 궁금합니다!
 
아래 코드는 제가 singleton으로 구현한 SqfLiteDatabase 클래스 인데, 테스트코드 작성시
final db = await databaseFactoryFfi.openDatabase(inMemoryDatabasePath);
이 코드를 어떻게 작성하면 좋을지 조언 주시면 감사하겠습니다!
 
감사합니다. 오늘 하루도 좋은 하루 되세요 :)
import 'package:flutter_architecture/data/data_source/note_db_helper.dart';
import 'package:sqflite/sqflite.dart';

class SqfLiteDatabase {
  static const tableName = 'note';
  static const databaseName = 'notes_db';

  static final SqfLiteDatabase _singleton = SqfLiteDatabase._internal();

  factory SqfLiteDatabase() {
    return _singleton;
  }

  SqfLiteDatabase._internal();

  Future<Database> database = initializeDatabase();

  static Future<Database> initializeDatabase() async {
    Database database = await openDatabase(
      databaseName,
      version: 1,
      onCreate: (db, version) async {
        await db
            .execute('CREATE TABLE $tableName (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT, color INTEGER, timeStamp INTEGER)');
      },
    );
    return database;
    // NoteDBHelper(database);
  }
}

singleton android sqflite SqfliteTestCode Flutter ios

답변 1

1

오준석

provider_setup 에 쓴 코드는 모두 싱글톤이 맞습니다.

 

initializeDatabase(Database db) 처럼 수정하셔서 외부에서 db를 받을 수 있도록 수정하시면 될 것 같습니다.

테스트 할 때 Database를 교체해야 테스트가 가능하니까요.

MVVM, 클린 아키텍처 관련 질문 있습니다.

0

85

2

가끔씩 ui가 깨지는? 현상이 있어서 질문드립니다.

0

91

1

freezed 3.0 대응된 코드 깃헙에도 업데이트 해주실 수 있으신가요?

0

176

3

sealed class 사용시 기능은 동작하지만 Radio위젯에 선택 표시가 안되는 부분 질문

0

117

2

sealed class 사용시 The getter 'orderType' isn't defined for the type 'NoteOrder<dynamic>' 오류

0

92

2

유즈케이스 관련하여 질문 드립니다.

0

91

1

mockito사용시 오류 해결법

1

123

2

sealed class 사용 문의2

0

75

2

sealed class 사용 문의

0

116

2

freezed3.0에서 build시 when생성되지 않습니다.

0

263

2

Try implementing the missing methods, or make the class abstract. 문제해결 공유

0

236

2

This is likely caused by a misconfigured builder definition. 오류 해결 방법

1

316

3

강의 화면이 안보여요

0

133

3

Flutter에서 추천하는 Navigator, Router

0

322

2

The following ProgressEvent object was thrown resolving an image codec: [object ProgressEvent]

0

324

3

event와 ui_event

0

211

1

코드 색깔 관련 질문

0

207

1

Photo.fleezed.dart,photo.g.dart삭제시 에러

0

203

2

sealed class 적용 시...

0

325

1

클린 아키텍처 질문

0

307

1

sealed class 데이터 접근

0

323

1

서버에서 데이터를 가져와서 사용하는 경우...

0

230

1

뷰/뷰모델 작성 질문

0

269

1

freezed JsonKey 사용 예시 공유

1

789

1