Open1
プレビュー用モックviewModelの作り方

説明長いな。
やることはリポジトリとviewModelを作ること。
リポジトリを作る
自分はリポジトリのインタフェースをコピーして、頭にoverrideつくっつけ、
最後に空のラムダなどをくっつけて、空のリポジトリを作成してます。
返り値があるメソッドはTODO入れておきます。
class MockTestRepository:TestRepository {
override suspend fun insert(test: TestEntity) {}
override suspend fun update(test: TestEntity) {}
override suspend fun delete(test: TestEntity) {}
override fun getAll(): Flow<List<TestEntity>> = TODO("Not yet implemented")
override fun getById(id: Int): Flow<TestEntity> = TODO("Not yet implemented")
}
モック用viewModelを作る
元のクラスやプロパティを継承させるので、元のviewModelをopenで作る必要があるので注意。
この例の場合、uiStateをoverrideして、UIに実際に渡すデータを作りこみしてます。
class MockTestViewModel:TestlViewModel(repository = MockTestRepository()) {
// プレビュー用にダミーの状態を提供する
override val uiState: StateFlow<TestUiState> =
MutableStateFlow(
TestUiState(
currentOperator = Operator.Minus,
questionCount = 3,
correctCount = 2,
level = 5,
dotColors = List(8) { Color.Cyan }
)
)
}
うーん。
もっと簡単な方法はないのだろうか。