@kotlin_lang

Страница 278 из 982
Михаил
11.08.2017
12:53:11
щас и без него все ок)

Vadim
11.08.2017
12:53:19
ок - подумаю еще + это попробую

ну да, файлик создал и в перед!)

Igor
11.08.2017
12:54:07
Что-же, я достиг чего хотел, всем спасибо ?

Google
Михаил
11.08.2017
12:54:18
testCompile "org.mockito:mockito-inline:$MOCKITO" вместо стандартного мокито и без файлика жизнь

Vadim
11.08.2017
12:54:56
https://antonioleiva.com/mockito-2-kotlin/

аа

ничеси

ок - спасибо, заценю)

? animufag ?
11.08.2017
12:57:06
я, может, ничего не понимаю в ООП, но зачем мокать поля?
ну бывают методы без возвращаемого результата, где вся их работа заключается в изменении стейта объекта. обычная императивщина тестировать это как-то надо, так что мокаешь поле и проверяешь изменялось ли так как ты хотел. это предположение, но думаю так делают и тесты получаются совсем негибкие и получается соответствие с реализацией метода

? animufag ?
11.08.2017
12:58:12
2й день не набрать 1к

Quantum Harmonizer
11.08.2017
12:58:36
да ?

Konstantine
11.08.2017
12:59:00
Хм, у меня написано 1000 мемберсов уже несколько дней)

Google
Vadim
11.08.2017
13:01:48
вот примерчик

private val dog: Dog = Dog() private val street: Street = Street() fun doDogCurrentAction(){ if(streen.isEmpty){ dog.bark() }else{ dog.sleep() } }

ну и мокаешь собаку с улицей и смотришь правильно ли работает

вызвался ли нужный метод у собаки в зависимости от состояния улицы

Михаил
11.08.2017
13:04:31
Для моканья полей можно использовать конструктор с передачей туда нужных полей. Над конструктором ставишь аннотацию @VisibleForTesting. С джавой это работало, с котлином - хз

Vadim
11.08.2017
13:05:05
да там проблема в val/var

если собака с улицей изменяемые - тесты проходят

Quantum Harmonizer
11.08.2017
13:05:38
private val dog: Dog = Dog() private val street: Street = Street() fun doDogCurrentAction(){ if(streen.isEmpty){ dog.bark() }else{ dog.sleep() } }
Эти val же от чего-то зависят? Пропихиваются в конструктор, например...

Vadim
11.08.2017
13:05:58
иначе пишет что нужный метод не вызвался

Михаил
11.08.2017
13:09:50
да там проблема в val/var
val инициализируется в конструкторе

возможно, стоит сделать 2 конструктора, в одном - норм значение полей, в другом - значение приходит с теста

Vadim
11.08.2017
13:11:33
хм - ну впринципе да, как вариант. Но не хотелось бы городить что-то лишнее только ради тестов

думаю пока var оставлю - дальше ее подумаю)

Михаил
11.08.2017
13:14:46
можно сделать один конструткор но с дефолтными параметрами

Антон
11.08.2017
13:19:50
Так а кто тысячный участник?

Quantum Harmonizer
11.08.2017
13:20:06
Михаил
11.08.2017
13:20:23
и все в бане

Timur
11.08.2017
13:20:30
а кто тот незабаненный счастливчик?

Антон
11.08.2017
13:21:25
и все в бане
У меня до сих пор показывает 1к members, значит не все в бане

Михаил
11.08.2017
13:21:31
можно сделать один конструткор но с дефолтными параметрами
можно, но тогда можно будет изменять поля класса из других классов, а нужно изменять только из тестов

Google
Vadim
11.08.2017
13:25:05
где мой приз?)О_о

Anton
11.08.2017
13:25:38
уверен что хочешь приз?

Vadim
11.08.2017
13:25:59
хм, если это бан - то нет)

Anton
11.08.2017
13:26:14
)

Timur
11.08.2017
13:26:18
но выбора у тебя нет

? animufag ?
11.08.2017
13:27:24
private val dog: Dog = Dog() private val street: Street = Street() fun doDogCurrentAction(){ if(streen.isEmpty){ dog.bark() }else{ dog.sleep() } }
(давно написал и не отправил, наверное уже все забыли) кстати альтернатива проверке вызовов методов – проверка объекта по equals то есть кидаешь некоторый объект, проходишься по одной из веток метода, проверяешь изменился ли он до ожидаемого вида. таким образом ты больше проверяешь работу метода, нежели его реализацию. с другой стороны это меньше "юнит" тест, тк проверяется и ещё и методы dog.bark. и не учитываются побочные эффекты кроме изменения внутри dog

Vadim
11.08.2017
13:29:57
хм - не очень понял как это применить к моей задаче (пример выше), но а так да - подумать можно

если метод менят объект и отдает его назад - то тогда понятно

а с замоканым объектом все равно ведь можно проверить тольк вызов метода, который должен поменять его состояние

само состояние же не меняется

Vadim
11.08.2017
13:32:24
You
11.08.2017
13:46:01
7!

ух ты

количество участников, переведенное в десятеричную систему больше количества админов на количество единиц в двоичном его представлении

Va
11.08.2017
14:25:22
чатом ошиблись...

Boris
11.08.2017
14:25:34
чем больше народу тем больше спама

DarkMentat
11.08.2017
14:25:39
жаль, что он не тысячный

Denis
11.08.2017
14:25:53
Гоните его, насмехайтесь над ним

Google
Михаил
11.08.2017
14:35:58
А вообще через рефлекшн вполне можно private val в рантайме менять

Михаил
11.08.2017
14:57:57
Подскажите, пожалуйста, можно каким-то образом решить проблему Kotlin not configured на тулбаре, где можно подтвердить gradle build и sync now, Интернета сейчас нету на ПК, все библиотеки Kotlin добавлены

Михаил
11.08.2017
15:02:20
Значит не все добавлено)

Admin
ERROR: S client not available

Михаил
11.08.2017
15:03:38
В чем проблема сделать их val?
их можно изменять из конструктора (вызвал случайно другой конструктор - логика работы поменялась)

Михаил
11.08.2017
15:18:48
Значит не все добавлено)
Это ошибка может быть связана с отсутствием Инета?

Михаил
11.08.2017
15:20:24
Также как и с VisibleForTesting)
С ним (если указать спец. опцию) нельзя будет не в тестах вызвать конструктор, разве не так?

Михаил
11.08.2017
15:20:44
У меня не работало. Изи вызывается

Мб в котлине дело

Pavel
11.08.2017
15:32:54
Объясните пожалуйста, почему условие никогда не выполняется? http://simplecat.tk/shots/shot-170811-183145-538325.png

Следующий степ - переход на return false.Return true никогда не вызывается, хотя и там и там 275.

? animufag ?
11.08.2017
15:37:43
return getGeneralTags().contains(tag.id!!.toint)

а вообще самому интересно

DivelNick
11.08.2017
15:42:13
Мб дело не в этом, но попробуй логи раскидать, у меня было 2 раз что отладчик моросил, мимо return проходил

Va
11.08.2017
15:42:42
пользуйтесь evaluate чтобы убедиться

Pavel
11.08.2017
15:49:18
А return внутри forEach { } куда возвращает значение?

Google
Pavel
11.08.2017
15:49:45
Наверное там и return true и return false выполняются?

? animufag ?
11.08.2017
15:50:45
ну если бы он возвращал внутри лямбды, то была бы ошибка мол юнит это тебе не булеан

Pavel
11.08.2017
15:55:26
Логично, но с другой стороны return в лямбде должен возвращать в лямбду.

? animufag ?
11.08.2017
15:57:51
нууу на самом деле в лямбде просто нет ретурна

может не всегда верное утверждение

но такое поведение есть. возвращается из лямбды только последнее выражение

Михаил
11.08.2017
16:04:13
Логично, но с другой стороны return в лямбде должен возвращать в лямбду.
Если учитывать что лямбды могут инлайниться, то все норм

Pavel
11.08.2017
16:11:15
Попробовал сделать с contains - не помогло. Судя по всему, проблема с разностью типов. Evaluate говорит, что tags - это List<Double> и сравнивания с Int он возвращает false. Но с чего он вдруг стал List<Double> если в функции явный каст в List<Int>? http://simplecat.tk/shots/shot-170811-190943-183643.png

? animufag ?
11.08.2017
16:23:01
странно что в типе список интов, в консоли он их пишет с 276.0

Pavel
11.08.2017
16:36:41
Добавил создание второго массива, с копированием каждого значения, и явным кастом его в Int. Помогло. Почему оно не кастуется в оригинале - хз =\

? animufag ?
11.08.2017
16:37:37
ну в общем да

? animufag ?
11.08.2017
16:37:55
я смог сделать минимальный воспроизводимый пример

странно что нет никаких предупреждений

Pavel
11.08.2017
16:38:11
А как сварить из этого checked cast?

? animufag ?
11.08.2017
16:38:20
ни в компиляции ни в рантайме

Quantum Harmonizer
11.08.2017
16:38:32

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