Так что я довольно новичок в тестировании, и хотя для меня это имеет большой смысл, некоторые вещи просто не чувствуются правильными.
Например: допустимо ли использовать довольно много макетов для тестирования метода?
В частности, я тестирую свой сервисный уровень, у которого есть метод для записи даты.
Есть много проверок правдоподобия, поэтому это выглядит примерно так:
(не фактический код)
public bool BookDate(Person person, int dateId, MyRoom room...)
{
var date = this.dateRepo.Get(dateId)
if (date == null) return false
if (!this.personService.Get(person.id)) return false;
if (!this.personService.IsValidPerson(person)) return false;
... more validations
}
Таким образом, метод должен выполнять проверки, которые, в свою очередь, зависят от предоставленных данных, разумеется (если они сами не являются интерфейсами). Тестирование различных случаев означает много насмешек.
Кроме того, мне часто приходится повторять насмешки, чтобы пройти валидацию и перейти к тому, что я хочу протестировать (например, дальше по методу, передавая много if)
Как мне легче это проверить?
Я мог бы разделить метод на вспомогательные методы, но опять же, чтобы высмеивать те, которые мне пришлось бы выставлять их в моем интерфейсе, хотя сам по себе они бесполезны для других классов.