Я пишу тест, который зависит от результатов метода расширения, но я не хочу, чтобы будущий сбой этого метода расширения когда-либо нарушал этот тест. Насмешка над этим результатом казалась очевидным выбором, но 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, которые могут предложить вместо меня использовать Isolator: я ценю усилия, так как похоже, что TypeMock может выполнять работу с завязанными глазами и опьянением, но наш бюджет в ближайшее время не увеличивается.