В отличие от многих людей, на самом деле, я не думаю, что тесты - это то, с чего начинать. Я думаю, что они слишком узки, слишком сосредоточены. Это все равно, что пытаться понять основную физику / механику, сначала приблизившись к внутримолекулярным силам и квантовой механике. Я также думаю, что вы слишком полагаетесь на хорошо написанные тесты, и, по моему опыту, многие люди не пишут достаточных тестов или пишут плохие тесты (которые не дают точного понимания того, что на самом деле должен делать код) ).
1) Я думаю, что первое, что нужно сделать, это понять, что, черт возьми, приложение на самом деле делает. Используйте его, по крайней мере, достаточно долго, чтобы составить представление о том, каково его основное назначение и какими могут быть различные типы данных и какие действия вы можете выполнять, и что наиболее важно, почему .
2) Вам нужно сделать шаг назад и увидеть большую картину. Я думаю, что лучший способ сделать это - начать с schema.rb
. Это говорит вам о нескольких действительно важных вещах:
- Что такое словарь / понятия этого проекта. Что на самом деле означает «пользователь» в этом приложении? Почему в приложении есть модели «Пользователь» и «Учетная запись» и как они отличаются / связаны?
- Вы можете узнать, какие есть модели, посмотрев в
app/models
, но это фактически скажет вам, какие данные содержит каждая модель.
- Благодаря полям
*_id
вы узнаете ассоциации между моделями, что поможет вам понять, как все это сочетается.
Я бы проследил за этим, посмотрев в файле *.rb
каждой модели (надеюсь) комментарии, проверки, ассоциации и любую дополнительную логику, относящуюся к каждой. Следите за регулярными старыми классами Ruby, которые могут жить в lib/
.
3) Лично я бы кратко взглянул на routes.rb
, поскольку он расскажет вам две ключевые вещи: краткий обзор всех действий в приложении и, если маршруты и контроллеры / действия хорошо названный и продуманный, быстрое понимание того, где могут жить различные функции.
В этот момент вы, вероятно, готовы приступить к изучению конкретной вещи, которую вам нужно выучить. Найдите контроллер для интересующей вас функции и откройте ее. Начните читать соответствующие действия, посмотрите, какие модели задействованы, и сейчас возможно, начните взламывать открытые тесты, если хотите.
Не забудьте использовать остальные инструменты: отладчики Ruby / Rails, инструменты разработки браузера, логи и т. Д.