Я хочу написать тест для взаимодействия ViewModel с репозиторием:
class ExampleUnitTest: KoinComponent {
val repository : Repository = mock()
val application : Application = mock()
val userRepository : UserRepository = mock()
private var tasksViewModel = MyModel(repository,application,userRepository)
// A CoroutineContext that can be controlled from tests
private val testContext = TestCoroutineContext()
// Set the main coroutines dispatcher for unit testing.
@ExperimentalCoroutinesApi
@get:Rule
var coroutinesMainDispatcherRule = ViewModelScopeMainDispatcherRule(testContext)
// Executes each task synchronously using Architecture Components.
@Rule
@JvmField
var instantTaskExecutorRule = InstantTaskExecutorRule()
@Test
fun addition_isCorrect() {
tasksViewModel.deleteAll()
verify(repository).deleteAll()
}
}
Моя ViewModel содержит LiveData:
class MyModel(var repository: Repository, application: Application, val userRepository: UserRepository) :
val items = MutableLiveData<List<LiveData<Task>>>().apply {
value = emptyList()
}
}
при запуске теста выдает следующую ошибку:
java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked.
и ссылки на
value = emptyList()
который внутри моей ViewModel
когда я удаляю эту строку
value = emptyList()
работает хорошо, но как с этим справиться, не удаляя эту строку