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