Вкратце: потому что с ними возни потом много, по сути, моки и стабы — следы реализации в тесте, теряется концепция "черной коробки". Поменял функционал, надо менять и тест.
Наша самая успешная выпускница (тим лид в AirBnB) — девушка. Се ля ви. И она за такие слова "типа женщины — влюбчивый, верный, творческий, мужчины — простота, логика" вам бы сейчас предъявила очень серьезно.
Вкратце: потому что с ними возни потом много, по сути, моки и стабы — следы реализации в тесте, теряется концепция "черной коробки". Поменял функционал, надо менять и тест.
Ну смотри, допустим я пишу юнит тест для класса: class Test def initialize(ar_obj) @x = ar_obj end def do_something @x.get_something end end
Я буду мокать ar_obj И это наоборот мне позволит абстрагироваться от Active Record и сделать юниты стабильнее. Разве нет?
Тесты в т.ч. нужны, чтобы рефакторить проще было. Поправил реализацию метода, прогнал тесты, если прошли — всё ок. А тут получается, каждый раз надо будет править и тесты тоже. Хотя функционал может и не поменяться.