Я думаю, что изменение поведения макетов по умолчанию для возврата значений, отличных от значений по умолчанию, было бы рискованным шагом.
Что бы произошло, если бы в ваших реальных реализациях ICustomerRepository была ошибка, из-за которой она не возвращала пустой список и вместо этого возвращала ноль?
Если вы написали другие модульные тесты и протестировали их на фиктивных версиях ICustomerRepository, которые автоматически возвращали пустой список, вы бы подумали, что все в порядке. Вы можете даже построить этот код и подумать, что он будет работать правильно, поэтому вы запускаете скомпилированное приложение, и оно начинает падать.
Почему? Потому что ваши классы, попавшие в ICustomerRepository, неправильно обрабатывали нули.
Я бы предпочел быть явным и установить в тесте ожидание возврата пустого IList из метода getCustomers (), чем что-то «волшебное» внутри макета. Зачем? Потому что это улучшает читабельность, и код работает в соответствии с тем, что другие разработчики, которые могут быть не так знакомы с Rhino, ожидают, что он будет работать. то есть метод без ожидания возвращает значение по умолчанию.