Estou escrevendo um teste que depende dos resultados de um método de extensão, mas não quero que uma falha futura desse método de extensão interrompa esse teste. Zombar desse resultado parecia a escolha óbvia, mas Moq não parece oferecer uma maneira de substituir um método estático (um requisito para um método de extensão). Existe uma ideia semelhante com Moq.Protected e Moq.Stub, mas eles não parecem oferecer nada para este cenário. Estou perdendo alguma coisa ou devo fazer isso de uma maneira diferente?
Aqui está um exemplo trivial que falha com a usual "Expectativa inválida em um membro não substituível" . Este é um mau exemplo de necessidade de simular um método de extensão, mas deve servir.
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 });
Quanto a qualquer viciado em TypeMock que possa sugerir que eu use o Isolator em vez disso: agradeço o esforço, pois parece que o TypeMock poderia fazer o trabalho vendado e embriagado, mas nosso orçamento não aumentará tão cedo.