Size: a a a

StartAndroid Ru Testing

2019 October 29

AT

Andrew Tomash in StartAndroid Ru Testing
Игорь Брежный
Привет, подскажите по тестированию ViewModel. У меня в нём есть репозиторий, и в нём есть remoteProvider и localProvider.

Сделал

@Mock
lateinit var repository:  Repository

Если просто написать тест в котором я проверю наличие данных вот таким образом, то данные там будут
 `when`(репозиторий.getAll()).thenReturn(list).

val result = репозиторий.getAll()

Но при тестировании именно viewModel, данные должны поместится в liveData. И в дебагге я вижу что там мне возвращается null. В чём может быть проблема?
вы репозиторий этот передаете внутрь вьюмодели, уверены, что это один и тот же объект?
источник

ИБ

Игорь Брежный in StartAndroid Ru Testing
Andrew Tomash
вы репозиторий этот передаете внутрь вьюмодели, уверены, что это один и тот же объект?
Да, это один и тот же объект. Если это поможет я могу показать код
источник

AT

Andrew Tomash in StartAndroid Ru Testing
было бы неплохо :)
источник

ИБ

Игорь Брежный in StartAndroid Ru Testing
вот
источник

AT

Andrew Tomash in StartAndroid Ru Testing
с виду все норм, а лист не нулл?
источник

ИБ

Игорь Брежный in StartAndroid Ru Testing
сек, сейчас покажу
источник

AT

Andrew Tomash in StartAndroid Ru Testing
currencyList это же лайвдата, да?
источник

ИБ

Игорь Брежный in StartAndroid Ru Testing
вот тест , где данные есть
источник

ИБ

Игорь Брежный in StartAndroid Ru Testing
Andrew Tomash
currencyList это же лайвдата, да?
Да, это она
источник

AT

Andrew Tomash in StartAndroid Ru Testing
я могу быть не прав, но мне кажется, что лайвдата под катопом мутит все асинхронно, и данные просто не успевают там появится в тот момент, когда ты их проверяешь
источник

AT

Andrew Tomash in StartAndroid Ru Testing
источник

AT

Andrew Tomash in StartAndroid Ru Testing
там есть кусок с Rule
источник

ИБ

Игорь Брежный in StartAndroid Ru Testing
Andrew Tomash
я могу быть не прав, но мне кажется, что лайвдата под катопом мутит все асинхронно, и данные просто не успевают там появится в тот момент, когда ты их проверяешь
Я тоже могу ошибаться, и спешл для этого вроде бы вот это есть
источник

AT

Andrew Tomash in StartAndroid Ru Testing
хмм
источник

AT

Andrew Tomash in StartAndroid Ru Testing
да, именно для этого
источник

AT

Andrew Tomash in StartAndroid Ru Testing
хз тогда ¯\_(ツ)_/¯
источник

N

Nikolay in StartAndroid Ru Testing
Игорь Брежный
Привет, подскажите по тестированию ViewModel. У меня в нём есть репозиторий, и в нём есть remoteProvider и localProvider.

Сделал

@Mock
lateinit var repository:  Repository

Если просто написать тест в котором я проверю наличие данных вот таким образом, то данные там будут
 `when`(репозиторий.getAll()).thenReturn(list).

val result = репозиторий.getAll()

Но при тестировании именно viewModel, данные должны поместится в liveData. И в дебагге я вижу что там мне возвращается null. В чём может быть проблема?
Надо подписаться на лайвдату в тесте
источник

N

Nikolay in StartAndroid Ru Testing
Иначе она не получит никаких значений
источник

N

Nikolay in StartAndroid Ru Testing
Хотя пропустил, вижу что есть
источник

N

Nikolay in StartAndroid Ru Testing
А пробовал писать when перед тем как создать экземпляр viewmodel
источник