🐈 гав-гав
я создаю экземпляр вьюмодели в тесте, и мокаю репозиторий, правильно?
🐈 гав-гав
мне нужно протестить что в вьюмодели - методе логаут я вызываю метод логают из репозитория
Aleksey
🐈 гав-гав
это фунекция проверяет был ли вызвон какой либо (тот что я напишу) метод определенное кол-во раз, да?
Aleksey
Aleksey
Но она подходит для сайд-эффектов, скорее
Например, какой-то метод внутри себя должен отправить событие в какой-нибудь PublishProcessor, чтоб его. Поскольку отправка туда события ничего не возвращает, ты можешь просто верифицировать, что тестируемый метод реально публикует туда событие
🐈 гав-гав
я до самих тестов даже дойти не могу, мне кажется проблема в зависимостях в градле, ошибки какие то такие
“Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)”
“At the moment you cannot provide own implementations of MockHandler”
Aleksey
🐈 гав-гав
я видел этот ответ, писал так как там, а первая ошибка видимо в том что в котлине все классы по дефолту final, и нужно создать тхт файл org.mockito.plugins.MockMaker, я создал, и походу его еще где то нужно инициализировать или обьявить
Aleksey
🐈 гав-гав
да, ресурсы для тестов
🐈 гав-гав
аа, ну я дебил, я вписал там строку не ту
🐈 гав-гав
бляха муха
🐈 гав-гав
сорян-_-, заработало
Aleksey
🤔
🐈 гав-гав
вписал в тот тхт файлик для мокито2 вместо “mock-maker-inline” - название файла
🐈 гав-гав
ну это скорее не на внимательность ошибка
🐈 гав-гав
или может так и написано в какой то палевной статье было, я вот не помню уже
Alex Android
🐈 гав-гав
Alex Android
потому что SOLID, вся хня
🐈 гав-гав
понял, спасибо, мейби они не везде есть, подобавляю тогда
🐈 гав-гав
так ведь должно выглядеть поидее?
Alex Android
нет. Application надо мокать как-то через таргеты
🐈 гав-гав
таргеты это что?
Alex Android
перепутал с @Rule, но это только с Dagger'ом
https://medium.com/@fabioCollini/android-testing-using-dagger-2-mockito-and-a-custom-junit-rule-c8487ed01b56
🐈 гав-гав
дагер не используется в проэкте
Сергей
Alex
Сергей
Или push-ей от fcm, заодно уведомить юзеров об обновлении и принудительно обновить всех, даже тех у кого пока выключено можно, но немного сложнее в поддержке.
Alex
Alex
Mike
Mike
Между поддерживаемым гуглом и поддерживаемым не гуглом я бы выбрал второе, там хотя бы есть шанс)
Сергей
Вот такой вопрос - пишется читалка книг. Есть три уровня - темы-> авторы->книги.
На каждом уровне до 100 позиций, естественно есть списки и ресайклер(ы).
Хотелось бы обойтись одним экраном, а может даже одним ресайклером с разными вьютайпами...как думаете, реализуемо?
Хотя можно три разных ресайклера и верхние уровни просто прятать? Что логичнее для такого иерархического просмотра. Три разных фрагмента реально, но банально.
Artur
Привет, сталкивался кто с таким?
No enum constant com.android.manifmerger.AttributeOperationType.TARGETAPI
WorkManager
Artem
Сергей
Бойлерплейтом только
Ruslan
подскажите как нагуглить решения?
надо по uuid найти bluetooth устройство, подключиться к нему и передать файлы. девайс как найти я знаю. а вот как в него передать файлы? это же не action_send
Сергей
У всех трех списков одни и те же общие поля (как минимум раздел). Их вообще можно на лету из одного генерить.
Anonymous
Сергей
Надстройка офлайновая к библиотеке Мошкова
Artem
Сергей
На чем выйдет. Для поездов и отпусков)
Дмитрий
Дмитрий
https://stackoverflow.com/questions/4921384/how-to-send-file-using-bluetooth-on-android-programatically
Ruslan
Yank
всем привет
BiometricPrompt bp = new BiometricPrompt.Builder(this)
.setNegativeButton("Cancel", this.getMainExecutor(),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
notifyUser("Authentication cancelled");
}
})
.build();
создаю диалог для аутентификации, и кнопка отмены белая, ее не видно, но она есть. как исправить этот случай?
Yank
спроект только что созданный, стили и все настройки дефолтные
Сергій
Сергій
контекст с темой как здесь https://stackoverflow.com/a/56289343
iamthevoid
Да, даже примеры в студии - не идеальны))
Vladimir
Всем привет.
У меня возник вопрос по RX. Очень надеюсь на вашу помощь. Собственно в 2х словах:
Надо ли при создании Observable как то слушать?взаимодействовать? в subscribeOn вызовом.
Подробнее:
Я создаю собственный Maybe объект, далее стандартно полписываюсь на него с
createMaybe()
.subscribeOn(.io)
.//logic
.observeOn(.mainThread)
.subscribe(..),
но это не работает. Все вычисления происходят в main thread.
Если я заменю createMaybe() на Maybe.just(..), то все работает отлично.
Детальный код тут https://pastebin.com/44Gtcta2
Vladimir
Собственно что я делаю не так при создании Maybe и где посмотреть правильный пример создания Observable из Callback?
Vladimir
Очень надеюсь на вашу помощь
Denis
Vladislav
Подскажите, пожалуйста, как называется наэкранная подсказка для пользователя
Vladimir
Roman
Vladislav
Vladislav
бэк затемняется, появляется надпись, стрелочка, чтоб дать подсказку юзеру
Roman
это не стандартный элемент, либо делать самому…либо искать либу)
Vadim
всем привет
а такой вот вопрос
рисую себе onboarding и проставляю marginTop = 23 скажем
но для разных экранов он прыгает визуально
единственное решение прописывать разметку для каждого устройства в ресурсах или в процентном соотношении играться(аля space ставить и в зависимости от свободного места заполнять их)?
🐈 гав-гав
Ребят, ещё вопросик по тестам, допустим я тестю вьюмодель, в классе теста я создаю её экземпляр и в самих тестах вызываю её методы (которые тестю), вопрос: а если некоторые методы приватные? Получается в тесте нету доступа к ним, значит их не тестить?
Alex Android
приватные не тестируются. You doing it wrong
🐈 гав-гав
Понял, а если допустим в публичном методе меняется приватная переменная, то я тоже это пропускаю, да?
Alex Android
Тебе надо тестировать поведение, а не внутреннее состояние
Сергей
🐈 гав-гав
Понял, блин пока не особо понимаю смысла тестирования
Alex Android
Протестировать, что при заданных входных ситуациях, твой код реагирует ожидаемо
Alex Android
Поймёшь, когда на внесение одного изменения, будет всплывать 2 бага