Size: a a a

Kotlin Community

2020 August 06

TH

Taras Hreshchyshyn in Kotlin Community
Привет. Подскажите, пожалуйста, почему сдесь тест падает с ошибкой IllegalStateException: This job has not completed yet. Если поменять runBlockingTest на runBlocking или убрать виз контекст - всё рабоает хорошо. Как правильно сделать? Если проблема  в диспатчере, то какой нужно использовать что бы тесты не падали?
источник

I

Ilya in Kotlin Community
iirc нужно переделать в sFoo контекст. И в тесте надо передавать тестовый контекст (он доступен внутри runBlockingTest и называется, кажется, context).
источник

I

Ilya in Kotlin Community
Суть runBlockingTest в том, чтобы протестировать корутинное поведение в однопоточном тесте и не ждать делеев. Для этого ему нужен контроль над контекстами.
источник

TH

Taras Hreshchyshyn in Kotlin Community
iirc - это что?)
источник

TH

Taras Hreshchyshyn in Kotlin Community
Ilya
Суть runBlockingTest в том, чтобы протестировать корутинное поведение в однопоточном тесте и не ждать делеев. Для этого ему нужен контроль над контекстами.
вот для чего он нужен я поняв, а как этого достичь нужно разобратся  ещё)  С контекстами тоже путаница в голове пока
источник

I

Ilya in Kotlin Community
Taras Hreshchyshyn
iirc - это что?)
if I remember correctly
источник

TH

Taras Hreshchyshyn in Kotlin Community
сложно)  
спасибо за навдку)
источник

TH

Taras Hreshchyshyn in Kotlin Community
Ilya
Суть runBlockingTest в том, чтобы протестировать корутинное поведение в однопоточном тесте и не ждать делеев. Для этого ему нужен контроль над контекстами.
сделал  TestCoroutineScope в который передал TestCoroutineDispatcher. Потом этот диспатчер инжекчу в класс который тестирую. Ну и в тесты запускаю TestCoroutineScope.runBlockingTest всё работает. Спасибо!)
источник

PE

Pavel Erokhin in Kotlin Community
Taras Hreshchyshyn
iirc - это что?)
Мой коллега с Британии тоже был озадачен этим вопросом, очередная аббревиатура которая распространилась между русскими, под видом английской :), ну и напоидумали такого, что даже носители языка такого не знают 😂😂😂, извините за оффтоп
источник

I

Ilya in Kotlin Community
Pavel Erokhin
Мой коллега с Британии тоже был озадачен этим вопросом, очередная аббревиатура которая распространилась между русскими, под видом английской :), ну и напоидумали такого, что даже носители языка такого не знают 😂😂😂, извините за оффтоп
Простите за мой неологизм. Возможно, в Британии она и не используется, но многие американцы используют ее регулярно (в том числе, мои коллеги). Ну и борцу за чистоту языка неплохо бы знать, что норма русского языка - "из Британии".
источник

PE

Pavel Erokhin in Kotlin Community
Ilya
Простите за мой неологизм. Возможно, в Британии она и не используется, но многие американцы используют ее регулярно (в том числе, мои коллеги). Ну и борцу за чистоту языка неплохо бы знать, что норма русского языка - "из Британии".
Да не, я ничего против не имею, что ты так сразу едко отреагировал)

Спасибо за поправку в "из", не знал.
источник

AA

Aсхад Apishev in Kotlin Community
как сказать функции, чтобы она принимала в качестве параметра subtype какого-то типа?

fun foo(arg: T) - аргумент типа Т
а мне нужен subtype типа Т, как если бы можно было написать: arg: <out T>
источник

PE

Pavel Erokhin in Kotlin Community
Aсхад Apishev
как сказать функции, чтобы она принимала в качестве параметра subtype какого-то типа?

fun foo(arg: T) - аргумент типа Т
а мне нужен subtype типа Т, как если бы можно было написать: arg: <out T>
... arg: T) where T : Type
источник

QH

Quantum Harmonizer in Kotlin Community
Aсхад Apishev
как сказать функции, чтобы она принимала в качестве параметра subtype какого-то типа?

fun foo(arg: T) - аргумент типа Т
а мне нужен subtype типа Т, как если бы можно было написать: arg: <out T>
А оно же так и есть. func(CharSequence) легко принимает String, а func(T) спокойно примет любой подтип Т
источник

AH

Ayrat Hudaygulov in Kotlin Community
Товарищи, есть моя суспенд функция:
suspend fun foo(): Int = …
и есть функция из либы (Caffeine):
override fun asyncLoad(key: String, executor: Executor): CompletableFuture<…>

надо их склеить так чтобы в asyncLoad вызывалась foo и возвращала CompletableFuture
Есть готовый клей на такой случай?)
источник

I

Igor in Kotlin Community
Ребят, можно как-то из номера строки inline функции, востановить настоящий стектрейс?
источник

RI

Ruslan Ibragimov in Kotlin Community
Ayrat Hudaygulov
Товарищи, есть моя суспенд функция:
suspend fun foo(): Int = …
и есть функция из либы (Caffeine):
override fun asyncLoad(key: String, executor: Executor): CompletableFuture<…>

надо их склеить так чтобы в asyncLoad вызывалась foo и возвращала CompletableFuture
Есть готовый клей на такой случай?)
return future { foo() } (coroutines-jdk8 должен быть подключен)
источник

AH

Ayrat Hudaygulov in Kotlin Community
Ruslan Ibragimov
return future { foo() } (coroutines-jdk8 должен быть подключен)
неплохо. прям хороший, годный клей.
источник

QH

Quantum Harmonizer in Kotlin Community
Igor
Ребят, можно как-то из номера строки inline функции, востановить настоящий стектрейс?
дыа, по клику на стекфрейм идея предлагает выбор — inline function body vs. inline function call site
источник

I

Igor in Kotlin Community
Quantum Harmonizer
дыа, по клику на стекфрейм идея предлагает выбор — inline function body vs. inline function call site
Нет не предлагает, стектрей вообще из fabric
источник