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 }
            )
        )
}

うーん。
もっと簡単な方法はないのだろうか。