У меня есть тестируемый код, который в основном выглядит следующим образом (конкретный код не важен для вопроса. Это просто здесь для пояснительных целей):
public ICollection<Product> GetByCategory(string category, ISession session)
{
return session
.CreateCriteria(typeof(Product))
.Add(Restrictions.Eq("Category", category))
.List<Product>();
}
Здесь используется цепочка методов (и решение, которое я ищу, также применимо к синтаксису свободного интерфейса ).
Меня не интересует поиск решений только для этого конкретного примера, меня интересует решение более общей проблемы. В этом примере я хотел бы добавить только ожидание для CreateCriteria. Если я сделаю это, то получу исключение NullReferenceException, даже если CreateCriteria вернет заглушку, потому что метод Add возвращает значение null.
Я бы хотел, чтобы мой тест продолжал работать, даже если дополнительные методы связаны или метод Add будет удален.
Есть ли общий прием для уменьшения количества тестовых двойных / ожидаемых вызовов до тех, против которых я хочу утверждать, при использовании цепочки методов?
Решение, которое я могу придумать, - это создать шаблон T4, который перечисляет все методы для типа и создает заглушку с ожиданиями, которые дают разные возвращаемые значения по умолчанию. Но мне интересно, есть ли варианты попроще.
Я использую Rhino.Mocks, но мне хотелось бы получить более общее решение.