Size: a a a

StartAndroid Ru Testing

2017 July 24

DV

Dmitry Vinogradov in StartAndroid Ru Testing
если все будет ок, значит getUserPhoto вызывается несколько раз
источник

W

WaterSmith in StartAndroid Ru Testing
блин, да
источник

DV

Dmitry Vinogradov in StartAndroid Ru Testing
походу тест нашел ошибку в презентере
источник

DV

Dmitry Vinogradov in StartAndroid Ru Testing
работает)
источник

W

WaterSmith in StartAndroid Ru Testing
=)
источник

W

WaterSmith in StartAndroid Ru Testing
хм, наверное мне нужно вооружиться отладчиком, и найти, почему же он вызывается дважды
источник

W

WaterSmith in StartAndroid Ru Testing
спасибо
источник

W

WaterSmith in StartAndroid Ru Testing
Нашел, проблема в том, что этот метод вызывается при присоединении вью к презентеру, а затем, он должен вызываться в случае если данные изменились. т.е. в данном случае двойной вызов корректен, потому что вью у меня присоединяется в @Before
источник

W

WaterSmith in StartAndroid Ru Testing
т.е. мне надо использовать atLeast(2)
источник

W

WaterSmith in StartAndroid Ru Testing
даже нет, times(2) вот так будет правильнее
источник

DV

Dmitry Vinogradov in StartAndroid Ru Testing
получается так
источник

W

WaterSmith in StartAndroid Ru Testing
А можно еще вопрос? Я импользую даггер. Раньше у меня презентер инжектил свои поля прямо в конструкторе, и потом еще с некоторыми из полей работал, в частности подписывался на репозиторий.
источник

W

WaterSmith in StartAndroid Ru Testing
В результате, в тесте я не мог создать объект презентера.
источник

W

WaterSmith in StartAndroid Ru Testing
Теперь, дабы сделать код тестируемым, я убрал инжект из конструктора, и делаю его после создания объекта презентера, а остальную работу вынес в отдельный метод initialise который вызываю после инжекта.
источник

W

WaterSmith in StartAndroid Ru Testing
Насколько это правильно? Или есть путь проще?
источник

DV

Dmitry Vinogradov in StartAndroid Ru Testing
а как объекты в конструкторе мешали тестам? их ведь можно (и нужно) просто замокать
источник

W

WaterSmith in StartAndroid Ru Testing
ну, на момент создания они же не проинициализированны, проэтому при попытке к ним обратиться будет NPE или я что-то не так понимаю?
источник

DV

Dmitry Vinogradov in StartAndroid Ru Testing
если есть презентер типа
Presenter(Repository repository)

в тесте мы сначала создает mock объект для Repository
и потом используем его при создании презентера
источник

W

WaterSmith in StartAndroid Ru Testing
т.е. у меня в презентере есть репозиторий, аннотированный @Inject. В конструкторе презентера делается инжект этого репозитория: MainApp.getComponent().injectPresenter(this);
источник

W

WaterSmith in StartAndroid Ru Testing
Вот да, репозиторий в конструктор передать тоже можно, но зачем тогда даггер?
источник