Size: a a a

Moxy – MVP библиотека под Android

2020 June 04

R

Roman in Moxy – MVP библиотека под Android
Переслано от Михаил E1ement
В фрагменте:
@Inject
   lateinit var presenterProvider: MyDayPresenter
   private val mPresenter by moxyPresenter { presenterProvider }

в компоненте фичи:
@Component(
   dependencies = [AppComponent::class]
)
@PerFragment
interface MyDayComponent {
   fun inject(fragment: MyDayFragment)
}
источник

МE

Михаил E1ement in Moxy – MVP библиотека под Android
Roman
Спасибо большое, я уже разобрался
источник
2020 June 06

S

Singular in Moxy – MVP библиотека под Android
fun addedItem() {
       ApiRequest.getItems()
           .subscribeOn(Schedulers.io())
           .observeOn(AndroidSchedulers.mainThread())
           .subscribe({
               viewState.setData(it)
           }, ::messages)
   }


Как написать Unit в Presenterer?
источник

ЕХ

Евгений Храмов... in Moxy – MVP библиотека под Android
Singular
fun addedItem() {
       ApiRequest.getItems()
           .subscribeOn(Schedulers.io())
           .observeOn(AndroidSchedulers.mainThread())
           .subscribe({
               viewState.setData(it)
           }, ::messages)
   }


Как написать Unit в Presenterer?
выкинуть реактивщину и перейти на корутины
источник
2020 June 07

SG

Sergey Grushin in Moxy – MVP библиотека под Android
Евгений Храмов
выкинуть реактивщину и перейти на корутины
Не, ну это уже какое-то навязывание. Оно оправдано личными вкусами или есть смысл?
источник

ЕХ

Евгений Храмов... in Moxy – MVP библиотека под Android
Sergey Grushin
Не, ну это уже какое-то навязывание. Оно оправдано личными вкусами или есть смысл?
мне показалось из вопроса что речь про unit тест
я могу ошибаться автор вопроса пока не ответил
если действительно речь про unit тест то да надо выкинуть реактивщину и забыть про неё как про страшный сон
почему я так считаю?
потому что есть опыт мучений и сравнительный опыт получения наслаждения от программирования

реактивщина нормально не тестируется
с корутинами проблемы нет

ну и просто реактивщина знатное говно необоснованно хайпанутая
источник

AD

Aleksey D. in Moxy – MVP библиотека под Android
Евгений Храмов
мне показалось из вопроса что речь про unit тест
я могу ошибаться автор вопроса пока не ответил
если действительно речь про unit тест то да надо выкинуть реактивщину и забыть про неё как про страшный сон
почему я так считаю?
потому что есть опыт мучений и сравнительный опыт получения наслаждения от программирования

реактивщина нормально не тестируется
с корутинами проблемы нет

ну и просто реактивщина знатное говно необоснованно хайпанутая
да все там норм тестируется 🌚
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
Singular
fun addedItem() {
       ApiRequest.getItems()
           .subscribeOn(Schedulers.io())
           .observeOn(AndroidSchedulers.mainThread())
           .subscribe({
               viewState.setData(it)
           }, ::messages)
   }


Как написать Unit в Presenterer?
Делаете фейк реализацию для api request, подменяете schedulers на trampoline через rx plugins, мокаете View, прикрепляете мок-реализацию к презентеру, вызываете метод презентера, проверяете, что был вызван нужный метод на View
источник

ЕХ

Евгений Храмов... in Moxy – MVP библиотека под Android
Алексей Ершов
Делаете фейк реализацию для api request, подменяете schedulers на trampoline через rx plugins, мокаете View, прикрепляете мок-реализацию к презентеру, вызываете метод презентера, проверяете, что был вызван нужный метод на View
почему фейк а не мок?
источник

ЕХ

Евгений Храмов... in Moxy – MVP библиотека под Android
https://medium.com/@PaulinaSadowska/writing-unit-tests-on-asynchronous-events-with-rxjava-and-rxkotlin-1616a27f69aa
вот кстати хорошая статья с примерами
там прям то что надо по вопросу
и по моему набросу о проблемах реактивщины
источник

IG

Ilya Gulya in Moxy – MVP библиотека под Android
Ну основная проблема у него - то что по его мнению нужно явно прокидывать Scheduler во все методы к которые требуют какого-то Scheduler для своей работы. Это не так. Достаточно подменить все основные Scheduler на trampoline либо TestScheduler через RxJavaPlugins и всё.
источник

IG

Ilya Gulya in Moxy – MVP библиотека под Android
Ну и не надо забывать что корутины сами по себе это не замена RxJava
источник

IG

Ilya Gulya in Moxy – MVP библиотека под Android
Так что совет выглядит странно
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
Евгений Храмов
почему фейк а не мок?
Потому что моки нужны там, где нельзя сделать фейки)
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
Джейк где-то хорошо про это писал
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
И вот в соседнем чате весьма кстати запостили
источник

ЕХ

Евгений Храмов... in Moxy – MVP библиотека под Android
написано конечно много но притянуто за уши
позвольте не согласиться с автором статьи
источник

ЕХ

Евгений Храмов... in Moxy – MVP библиотека под Android
особенно радует что со слов автора изменения в имплементации приводят к тому что тесты надо править
я бы сказал если наоборот то тнсты значит бестолковые
если тесты не реагируют падениями на изменение имплементации то их можно выкинуть
либо они тестируют nothing
либо выбранный подход не верный
источник

SV

Sergey Vasilchenko in Moxy – MVP библиотека под Android
https://www.reddit.com/r/androiddev/comments/d05di8/do_you_use_the_impl_suffix_if_you_only_have_one/ez86bi3/
здесь про моки и фейки, то что алексей упоминал
tl;dr Mockito is test cancer. Avoid.
источник