我正在写一个测试,它依赖于一个扩展方法的结果,但我不希望该扩展方法将来的失败也会破坏这个测试。模仿这一结果似乎是显而易见的选择,但Moq似乎没有提供一种覆盖静态方法(扩展方法的要求)的方法。Moq.Protected和Moq.Stub也有类似的想法,但它们似乎没有为这种情况提供任何东西。我是不是遗漏了什么,或者我应该以不同的方式来做这件事?
这里有一个简单的例子,它使用通常的"Invalid member on a non-overridable“失败。这是一个需要模拟扩展方法的坏例子,但它应该这样做。
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可以蒙住眼睛喝醉了,但我们的预算不会很快增加。
https://stackoverflow.com/questions/562129
复制相似问题