Если вы хотите лучше понять BDD, попробуйте подумать об этом, не используя слово «тест».
Вместо того, чтобы писать тест, вы напишите пример того, как вы можете использовать свой класс(и вы не можете использовать его, кроме как через публичные методы).Вы собираетесь показать, почему ваш класс ценен для других классов.Вы определяете объем обязанностей вашего класса, показывая (посредством насмешек), какие обязанности делегированы в другом месте.
В то же время вы можете задаться вопросом, являются ли эти обязанности соответствующими, и настроить методы в вашем классе.быть настолько интуитивно понятным, насколько это возможно.Вы ищете код, который легко понять и использовать, а не код, который легко написать.
Если вы можете мыслить с точки зрения примеров и предоставления ценности через поведение, вы создадите код, который легкоиспользовать с примерами и описаниями, которым могут следовать другие люди.Вы сделаете свой код безопасным и легко изменяемым.Если вы подумаете о тестировании, вы закрепите его, чтобы никто не смог его сломать.Вам будет трудно изменить.
Если это достаточно сложно, чтобы есть внутренние методы, которые вы действительно хотите протестировать отдельно, разбейте их на другой класс, затем покажите, почему этот класс полезен и что он делает длякласс, который его использует.
Надеюсь, это поможет!