Итак, мы с коллегой находимся в довольно жарком споре. Мы начинаем новый проект и пытаемся использовать BDD. Мы оба новички и не совсем понимаем, какие практики следует использовать. Мы написали некоторые спецификации и сейчас реализуем код. Все становится довольно сложно, поскольку существует много взаимодействий с базой данных. Мы застряли на том, как мы должны издеваться над нашими данными. Метод, о котором мы говорили, потребовал бы, чтобы мы издевались над нашими методами вместо наших данных. Проще всего, если я покажу вам в коде...
public static void AssignLeadToDistributor(int leadId, int distributorId)
{
Lead lead = GetById(leadId);
lead.DistributorId = distributorId;
Save(lead);
}
По сути, нам пришлось бы переопределить GetById() и Save(), чтобы вернуть фиктивные данные для проверки. Кажется, имеет смысл сделать это следующим образом:
public static void AssignLeadToDistributor(Lead lead, Distributor distributor)
{
lead.DistributorId = distirbutor.Id;
}
Тогда мы могли бы просто издеваться над нашими объектами.
Очевидно, что второй метод упрощает тестирование. Однако аргумент заключается в том, что мы не хотим получать новый объект лида и дистрибьютора в нашем внешнем коде, потому что было бы проще просто передать идентификаторы наших объектов. Сокращение фактического кода в нашем интерфейсе.
Надеюсь, я объяснил это достаточно хорошо.
Что вы думаете, ребята? Какой путь имеет больше смысла?