Текст на картинке: "Что это за куча тестов? Что они проверяют? Для кого предназначены все эти описания?"
Это комментарий к одному из моих изменений на github, когда я работал по курсу React, см
Совершенно справедливый комментарий от человека, который <всегда делал тесты "по другому" />:
describe('Product', () => {it('should render', () => {...});it('should init from 0 amount', () => {...});it('should increment amount', () => {...});it('should fetch data', () => {...});});
Я начинал знакомство с тестами именно в этой структуре и именно такой комментарий должен написать любой человек, которого устраивает эта структура.
И я был точно таким же человеком, пока в какой-то момент не заметил, что многие сценарии из старого кода снова и снова возвращаются ко мне и мне нужно дописать "еще пару тестов". Это очень мешало, потому что в каждом таком раскладе я уже полгода или даже больше как работал над другими задачами и было очень сложно вспомнить "а про что там вообще код?"
Поэтому я отказался от этого формата описания тестов на компонент/функцию и начал использовать формат "перечисляю все возможные комбинации параметров". Ведь те самые комбинации, которые "снова и снова" находили меня, были как раз из этого списка возможных комбинаций, про которые почему-то никто из команды не подумал и не сделал тесты. Я думаю, что составляя список сценариев "человеческим языком" мы просто не замечали существование этих комбинаций.
Поэтому сейчас мои тесты - это простой перебор всех возможных комбинаций по значениям входных параметров:
describe('Product', () => {it('<Product />', () => {...});it('<Product fetchData/>', () => {...});it('<Product product={}/>', () => {...});it('<Product product={} fetchData/>', () => {...});
После этого изменения в процессе написания тестов я увидел, что количество вопросов "баг записывать или как?" от нашей команды поддержки уменьшилось почти до нуля.
Поэтому я до сих пор придерживаюсь этого подхода в составлении тестов.
Хотя конечно же он может вызывать желание написать именно такие комментарии :)
Комментариев нет:
Отправить комментарий