@rubylang

Страница 548 из 1684
ojab
29.10.2016
15:21:32
а, в смысле в итоговых доках?

Alex
29.10.2016
15:21:35
Угу.

Нет смысла дважды плодить одно и тоже описание.

Я тут велосипед изобрел, хочу спросить это нормальная практика так тестировать protected методы? https://gist.github.com/Fedcomp/161b06df8883ff19830b2b84159a3a45

Google
Антон
29.10.2016
17:10:40
хороший вопрос

народ не любит тестировать private/protected методы

я тестирую через expect(subject.send(:method))

I
29.10.2016
17:11:48
А разве code coverage не по всем методам считается?

Антон
29.10.2016
17:12:02
coverage - заблуждение

ну у тебя coverage посчитает а фактически метод может принимать два состояния например а протесииовано одно

Alex
29.10.2016
17:12:44
О, надо на send перепилить.

coverage - метрика. Ко всем метрикам надо относиться со здоровым скептицизмом.

Антон
29.10.2016
17:13:21
А разве code coverage не по всем методам считается?
прогони такой класс с coverage 100% через мутант - узнаешь о себе много плохого

Alex
29.10.2016
17:14:57
Я кстати тоже не вижу смысл тестировать private метод. Но protected - часть апишки.

а private только bdd только хардкор

Антон
29.10.2016
17:15:28
ну у тебя private тоже метод, хочешь ты этого или нет

значет тебе сверху надо спускать исчерпывающие данные

Google
Alex
29.10.2016
17:17:00
Так тестировать надо только апишку

если у тебя метод недоступен как публичное или полупубличное (protected) апи то это просто часть реализации, и напрямую не тестируется.

Антон
29.10.2016
17:17:46
а почему бы не протестировать

Alex
29.10.2016
17:17:47
Ну и прогонять все через mutant - никакое тестовое покрытие не выдержит.

Антон
29.10.2016
17:17:50
фак зе систем

Alex
29.10.2016
17:17:54
Зачем тестировать внутреннюю реализацию.

сегодня одна, завтра другая.

Антон
29.10.2016
17:18:36
Зачем тестировать внутреннюю реализацию.
ну если у тебя внешняя реализация покрывает все кейсы - ок

просто это может оказаться долго

Alex
29.10.2016
17:19:02
Тестовое покрытие должно тестировать все предусмотренные кейсы.

все выдерживает
Оно разрастется слишком сильно.

Многие кейсы просто на практике не будут встречаться имхо конечно.

А большое тестовое покрытие тоже стоит трудозатрат на поддержку.

Антон
29.10.2016
17:19:45
дело же не в этом

просто ты написал hash['key'] а ключа нет, а тесты проходят потому что stub

кто-то полезет рефакторить и сломает все к херам

Alex
29.10.2016
17:20:24
Это уже моки vs интеграционные тесты.

кто-то полезет рефакторить и сломает все к херам
Значит тестовое покрытие хуевое.

Google
Антон
29.10.2016
17:20:45
покрытие может быть 100%

Alex
29.10.2016
17:20:55
Это метрика.

Антон
29.10.2016
17:21:01
просто вместо hash['key'] надо стараться писать hash.fetch('key')

hash.fetch('key') не мутирует

Alex
29.10.2016
17:21:20
просто вместо hash['key'] надо стараться писать hash.fetch('key')
Ну это уже просто опыт/здравый смысл.

Я например .dig юзаю

Антон
29.10.2016
17:21:33
так мутант тебе очень много нового о тебе расскажет

мутант не для того чтобы было больше тестов а для того чтобы было меньше мутаций

Alex
29.10.2016
17:22:21
Да, я уже читал про мутационное тестирование еще полгода назад. Но многие кейсы на практике не возникнут, а большое тестовое покрытие замедляет рефакторинг/внедрение фич.

Антон
29.10.2016
17:23:11
а ты попользуйся мутантом у меня не хватит буков чтобы рассказать

чотам пользоваться mutant —use rspec Class

Alex
29.10.2016
17:23:30
Ну я в общих чертах представляю как оно будет выглядеть.

Надо будет перед релизом гема прогнать ?

Антон
29.10.2016
17:24:00
ооо

будет уже поздно

Alex
29.10.2016
17:24:16
Там примитивный гем же.

Антон
29.10.2016
17:24:20
написакл класс? протестировал? прогони мутанта

Alex
29.10.2016
17:24:40
он разве не дает много false positives?

Антон
29.10.2016
17:24:57
нет

Google
Антон
29.10.2016
17:25:01
не много

я какие-то мутации игнорирую конечно

какие-то очевидно нужно тестами покрывать

какие-то мутации рефакторятся

Alex
29.10.2016
17:25:51
Окей посмотрю, спасибо.

Антон
29.10.2016
18:37:45
поставили новую макось?

Денис
29.10.2016
18:39:39
бгг

там не собирается grpc, рано ещё обновляться

Иван
29.10.2016
19:10:53
подскажите можно ли как то отслеживать создание синглтона класса. Хотелось бы выводить в консоль сообщение о том что такой-то синглтон класс создался

Alex
29.10.2016
19:11:15
Что значит синглтон создался?

Admin
ERROR: S client not available

Иван
29.10.2016
19:12:03
inherited хук в классе Object работать не хочет

Что значит синглтон создался?
ну например после class « obj; end

или псоле создания метода класса

Alex
29.10.2016
19:14:39
а смысл отлавливать это дело?

Иван
29.10.2016
19:15:33
ну мне интересно, создается ли синглтон класс у объекта после вызова любого метода

да и еще интересно почему inhereted хук в Object классе не работает. Синглтон класс ведь наследуется от Object в любом случае

Alex
29.10.2016
19:35:23
покажи хук

Иван
29.10.2016
19:36:29
class Object def self.inherited(child_class) puts "#{child_class} created" end end

ну при создании обычных классов он срабатывает, а вот синглтон не цепляет

Google
Alex
29.10.2016
19:37:17
Тут или в соседнем чате была дискуссия про lookup

где писалось что руби ищет сначала метод в базовом object а затем уже идет по цепочке, но я хз.

Иван
29.10.2016
19:38:10
так я эту дисскусию и начал

ты про method lookup?

Alex
29.10.2016
19:39:44
да

Иван
29.10.2016
19:40:24
в начале ruby идет в синглтон класс объекта

и если его нет, он видимо его создает, я это проверить и хотел

Alex
29.10.2016
19:40:57
эм стоп

а разве он его не создает сразу при определении?

Иван
29.10.2016
19:41:40
при создании объекта?

Alex
29.10.2016
19:41:46
Вот ты объявил класс

теперь интерпритатор запустился и прошелся по файлу, теперь у него есть этот синглтон в памяти. Нет?

Иван
29.10.2016
19:43:27
смотри есть у меня объект любой неапример o = Object.new

когда я на этом обхекте вызову метод любой, например o.bla

руби должен сходить в синглтон класс объекта o

в какой момент он его создаст

?

Alex
29.10.2016
19:44:23
При прочтении объявления?

к моменту когда ты сделаешь Object.new синглтон Object уже существует

Иван
29.10.2016
19:45:11
синглтон не Object, а именно o

Alex
29.10.2016
19:45:26
o не синглтон а экземпляр класса.

Синглтон это класс хранящий состояние

а класс и инстанс класса это два разных понятия.

Страница 548 из 1684