Size: a a a

Programming Offtop

2020 March 13

KD

Konstantin Dovnar in Programming Offtop
Igor
fun globalImpureFunc(...) =
   pureFunc1(...)
       .let { doSideEffectWithDb(it) }
       .let { pureFunc2(it) }

Так ты покрой юнитами pureFunc1 и pureFunc2 (но не globalImpureFunc)
Да я вообще ничего не буду покрывать. Пользователи мне на что? Пусть тестируют! А я пошёл пиво пить.
источник

AM

Andrew Mikhaylov in Programming Offtop
Просто одно дело естественным способом передать тестовые данные в функцию, другое — молотить фейковые классы, которые умеют плеваться тестовыми данными, которые в них в тесте засунули.
источник

AM

Andrew Mikhaylov in Programming Offtop
Konstantin Dovnar
Да я вообще ничего не буду покрывать. Пользователи мне на что? Пусть тестируют! А я пошёл пиво пить.
Хорош, тоже так делаю.
источник

I

Igor in Programming Offtop
Konstantin Dovnar
Да я вообще ничего не буду покрывать. Пользователи мне на что? Пусть тестируют! А я пошёл пиво пить.
А у нас отдельная команда UI покрывает
источник

BP

Bogdan Panchenko in Programming Offtop
+++
источник

KD

Konstantin Dovnar in Programming Offtop
Andrew Mikhaylov
Просто одно дело естественным способом передать тестовые данные в функцию, другое — молотить фейковые классы, которые умеют плеваться тестовыми данными, которые в них в тесте засунули.
По мне на деле суть одна.
Просто, разумеется, первый вариант чище и приятнее.
источник

AM

Andrew Mikhaylov in Programming Offtop
Разница в количестве телодвижений на реализацию и поддержку.
источник

I

Igor in Programming Offtop
Вот неплохой доклад в тему https://youtu.be/Rz4S0v7K7Ho
источник

AM

Andrew Mikhaylov in Programming Offtop
Ну и в чистоте с приятностью, конечно. Точнее, наверное, в уверенности, что всё правильно сделано.
источник

AM

Andrew Mikhaylov in Programming Offtop
С моками продолбать что-то, КМК, сильно проще, чем с вызовом функций :)
источник

AM

Andrew Mikhaylov in Programming Offtop
Да сколько можно, я ещё вчерашние видосы не досмотрел.
источник

I

Igor in Programming Offtop
источник

KD

Konstantin Dovnar in Programming Offtop
Andrew Mikhaylov
Разница в количестве телодвижений на реализацию и поддержку.
Но суть тестирования от этого не меняется.
Ты просто пробрасываешь фейковые данные.

p.s. под "приятностью" я и подразумевал более простую поддержку и реализацию:)
источник

AM

Andrew Mikhaylov in Programming Offtop
Ок :)
источник

I

Igor in Programming Offtop
Andrew Mikhaylov
Да сколько можно, я ещё вчерашние видосы не досмотрел.
Да там особых открытий нет
источник

AM

Andrew Mikhaylov in Programming Offtop
Igor
Да там особых открытий нет
Да мне открытия и не нужны, у меня это пока в стройную картину не легло в голове.
источник

ML

Mikhail Levchenko in Programming Offtop
Konstantin Dovnar
Но суть тестирования от этого не меняется.
Ты просто пробрасываешь фейковые данные.

p.s. под "приятностью" я и подразумевал более простую поддержку и реализацию:)
В случае моков ты еще часто проверяешь, что эти данные ты запросил или их пробросили
источник

ML

Mikhail Levchenko in Programming Offtop
И последовательность
источник

VP

Vladimir Petrakovich in Programming Offtop
Но ведь никто не мешает так не делать
источник

KD

Konstantin Dovnar in Programming Offtop
Вообще, для меня, как человека не работавшего по принципам DR — это выглядит всё довольно сложно и запарно.

Понимаю теорию и суть, но думая в контексте текущей разработки мне кажется, что код превратился бы в ту ещё кашу, т.к. вся обработка была бы в одном месте.

И какой-то условный: presenter.buttonClick() превратился бы в
val data = dataSource.getData()
val moreData = dataSource.getMoreData()
val result = useCase.doSomethingWithData(data, moreData)
view.showResult(result)
источник