@kotlin_lang

Страница 283 из 982
Михаил
16.08.2017
14:45:39
статус experimental говорит лишь о том, что код, написанный на 1.2, не обязательно будет работать на более старой версии (1.1)

Dzmitry
16.08.2017
14:45:43
так корутины же эксперементальные и это не часть языка. Библиотеку немного пофиксят и все

Михаил
16.08.2017
14:46:41
Dzmitry
16.08.2017
14:47:20
ну в смысле библиотека потом в стандартную передет как я понимаю

Google
Михаил
16.08.2017
14:48:39
а что мешает их брать в продакшн?
использование UI контекста в андироде делает невозможным запуск юнит тестов без всяких пауэр моков и роболектриков, например. по крайней мере проблему я не смог решить по крайней мере

Михаил
16.08.2017
14:51:17
Кто тысячный?)
видимо последние 6 новых человек )

судя по той тенденции, что сложилась в последние дни, тысячным человеком будет становится каждый, кто вошел после 999-го )

Dzmitry
16.08.2017
14:58:22
ну мы тестируем в юнит тестах rx цепочки, а это тоже ассинхронный код

Михаил
16.08.2017
14:59:20
Это интеграционные тесты или зачем ты в юнит тестах тестишь асинхронный код?
А почему я не могу тестировать асинхронный код как синхронный?

Igor
16.08.2017
14:59:51
Сам видишь, приходится карячить разные костыли (и всякие testschedulers в rx)

Михаил
16.08.2017
15:00:10
Не вижу

Igor
16.08.2017
15:00:32
> использование UI контекста в андироде делает невозможным запуск юнит тестов без всяких пауэр моков и роболектрико Ну хз, по моему это костыли

Михаил
16.08.2017
15:02:42
Ну в рх допустим с меинтред шедулером это решаемая проблема одной строчкой

Igor
16.08.2017
15:05:19
Ну мы же НЕ в rx чате. Кинь лучше проблемный код с корутинами - может всем чатиком по брейнштормим как это обойти

Михаил
16.08.2017
15:05:47
ща. как раз хотел конкретезировать проблему

Google
DarkMentat
16.08.2017
15:06:00
мы в рх чате? о_О

Pavel Shackih
16.08.2017
16:59:43
а как тестировать код с корутинами? в рх понятно, можно подменить шедулеры и сконвертить в блокируюущю операцию или через TestObserver

Anton
16.08.2017
17:02:27
на медиуме где то была статья с примерами

https://medium.com/@tonyowen/android-kotlin-coroutines-unit-test-16e984ba35b4

Михаил
16.08.2017
17:08:21
а как тестировать код с корутинами? в рх понятно, можно подменить шедулеры и сконвертить в блокируюущю операцию или через TestObserver
Ну вот единственная проблема это то что при запуске тестов кода где вызывается ui контекст вылазит not mocked Looper.getMainLooper()

Pavel Shackih
16.08.2017
17:10:27
ну в статье, которую Антон скинул, там по другому делают, там контекст корутины выставляется в активити вообще, а сама функция которая тестируется делается suspend и в самом тесте делается runBlocking. в общем не привычно как-то

Anton
16.08.2017
17:11:05
у меня кстати этот способ не получился но скорее из-за моих ошибок)

lnfn
16.08.2017
17:49:17
У меня тож тестируемые саспенд выходят
Как в таком случае делать отмену, если job в активити? Например с использованием android architecture component, когда нужно отменить задачу в методе oncleared.

lnfn
16.08.2017
17:54:07
launch(android) job?

Михаил
16.08.2017
17:55:31
А что может быть асинхронного в активити?

Если там только работа с ui

lnfn
16.08.2017
18:46:55
Ну вот в примере запускается суспенд метод презентера в активити через launch(android), который возвращает job. Когда тесты пишем мы помещаем метод презентера в runblocking так? Вопрос: как отменять в презентере то что запустилось в суспенд методе презентера, если job у нас в активити.

Igor
16.08.2017
18:51:41
Зачем вообще что-то отменять, вы там явную ссылку на activity храните чтоли?

lnfn
16.08.2017
19:37:31
class Presenter { suspend fun work() { Val res = networkcall().await } }

Михаил
16.08.2017
19:43:06
Имхо можно оставить асинхронность в презентере

lnfn
16.08.2017
20:01:15
Всм? Речь шла о том как тестировать. Порешали, что надо в активити делать launch(UI) { presenter.work()} а в тестах делать runblocking{presenter.work()}. Что делать если надо отменить задачу?

Igor
16.08.2017
20:06:07
Например, отменить запрос на сервер
Если ты будешь такое делать для POST, то точно приведешь систему в не консистентное состояния (оборванный на середине запрос может спокойно обработаться на сервере) Если у тебя продолжительный GET, то ему явно не место в презенторе.

Google
Konstantine
16.08.2017
21:05:08
Правильно ли я понимаю, что синглтоны (object Lalala {}) не надо инициализировать в коде? Просто тупо они доступны везде как какие-то глобальные константы?

Konstantine
16.08.2017
21:10:03
Понял, спасибо

Назаров
17.08.2017
05:43:00
Всем привет. У меня есть лист листов, которые содержат классы типа Image с полем url. Как можно красиво это превратить в обычный лист строк?

Alexander
17.08.2017
05:43:17
через ,map?

http://docs.w3cub.com/kotlin/api/latest/jvm/stdlib/kotlin.collections/map/

Vladimir
17.08.2017
05:44:09


Alexander
17.08.2017
05:44:32
а там лист листов

почитай тогда flatMap

тут пример есть http://www.baeldung.com/kotlin-collections-api

Назаров
17.08.2017
06:00:54
listEditions.flatMap { it.images }.map { it.url } Получилось так. Спасибо

Quantum Harmonizer
17.08.2017
12:01:29
@kieraweed опубликовал в @kotlin_jobs

kiera
17.08.2017
12:01:38
Михаил
17.08.2017
15:45:45
есть у кого проблема с кодогенерацией NonExistentClass? приходится при каждой сборке проекта его полностью пересобирать. проблема еще началась с 1.1.3-2, на 1.1.4 только чаще стала)

DarkMentat
17.08.2017
15:46:31
+

DarkMentat
17.08.2017
15:46:49
Room + Dagger постоянно такое вытворяют

и да, там классы в анотациях

Михаил
17.08.2017
15:48:07
у меня датабиндинг валится и даггер, зависит от того в чм были сдланы изменения

Admin
ERROR: S client not available

Google
Михаил
17.08.2017
15:48:27
именно от классов в аннотациях вроде как не зависит

DarkMentat
17.08.2017
15:48:29
в общем как лечить не знаю

Sasha
17.08.2017
16:28:26
Я тоже использую EAP в проде :)
Чуясе. Скидки уже есть на вазелин?)) Или все ок?))

Quantum Harmonizer
17.08.2017
16:28:56
Чуясе. Скидки уже есть на вазелин?)) Или все ок?))
Я не использую кодогенерацию и не знаю проблем :)

Sasha
17.08.2017
16:29:43
Я не использую кодогенерацию и не знаю проблем :)
Как я тебя понимаю. Я тоже выпилил нафиг все и жить стало лучше.)

Quantum Harmonizer
17.08.2017
16:30:36
Мне, кстати, нравится, как сделана кодогенерация в GreedDAO. Прям в твой файл добавляет код.

И с GreenDAO у меня было 0.5 проблем за всё время.

Sasha
17.08.2017
16:34:30
Надо будет глянуть. Спасибо. А то у нас сейчас реалм и так то все ок, но вес реалма смущает. Хотели посмотреть рум, но не судьба пока.

Quantum Harmonizer
17.08.2017
16:35:32
Надо будет глянуть. Спасибо. А то у нас сейчас реалм и так то все ок, но вес реалма смущает. Хотели посмотреть рум, но не судьба пока.
Там энтити только на Java можно писать. И сгенерированных DAO из Kotlin не видно, если не вынести в отдельный модуль.

Igor
17.08.2017
16:35:56
Я тоже использую EAP в проде :)
А в чем пррфит EAP? (в проде)

Quantum Harmonizer
17.08.2017
16:36:17
А в чем пррфит EAP? (в проде)
Потестить, выловить баги, если есть.

Михаил
17.08.2017
17:52:52
в общем как лечить не знаю
в чатике по мокси похоже нашел решение: убрать apply plugin: 'kotlin-kapt' добавить generateStubs = true

Va
17.08.2017
17:58:56
в чатике по мокси похоже нашел решение: убрать apply plugin: 'kotlin-kapt' добавить generateStubs = true
да, это, на самом деле, и внезапные баги с даггерром вылечило )

Google
Va
17.08.2017
17:59:55
а NonExistentClass лечится либо да, так, либо с помощью kapt.correctErrorTypes

Михаил
17.08.2017
18:00:17
второе мне никак не помогало)

Quantum Harmonizer
17.08.2017
18:00:53
./gradlew :clean rm -rf ./build/ rm -rf ./app/build/

Va
17.08.2017
18:01:55
там был еще хак javaCompileOptions { annotationProcessorOptions { includeCompileClasspath false } }

Vitalii
18.08.2017
06:38:38
./gradlew :clean rm -rf ./build/ rm -rf ./app/build/
Зачем двоеточия и зачем удалять билд папки и клинить одновременно? О_о

Quantum Harmonizer
18.08.2017
06:40:19
Зачем двоеточия и зачем удалять билд папки и клинить одновременно? О_о
Можно без двоеточия :) Чтобы совсем чистую сборку сделать.

Страница 283 из 982