Я пишу тест, который зависит от результатов метода расширения, но я не хочу, чтобы в будущем этот метод расширения никогда не нарушал этот тест. Издевательство над этим результатом казалось очевидным выбором, но Moq, похоже, не предлагает способ переопределить статический метод (требование для метода расширения). Существует аналогичная идея с Moq.Protected и Moq.Stub, но они, похоже, ничего не предлагают для этого сценария. Я что-то упускаю, или я должен идти об этом по-другому?
Вот тривиальный пример, который терпит неудачу с обычным "Недопустимым ожиданием для неперехваченного члена" . Это плохой пример необходимости издеваться над методом расширения, но он должен это делать.
public class SomeType {
int Id { get; set; }
}
var ListMock = new Mock<List<SomeType>>();
ListMock.Expect(l => l.FirstOrDefault(st => st.Id == 5))
.Returns(new SomeType { Id = 5 });
Как и для любых наркоманов TypeMock, которые могут предложить использовать изолятор вместо этого: я ценю усилия, поскольку похоже, что TypeMock может выполнять работу с завязанными глазами и опьяненными, но наш бюджет не увеличивается в ближайшее время.