Метод UnitTest не смоделирован с помощью ViewModel и LiveData - PullRequest
0 голосов
/ 20 мая 2019

Я хочу написать тест для взаимодействия 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()

работает хорошо, но как с этим справиться, не удаляя эту строку

...