最佳答案
我正在编写一个依赖于扩展方法的结果的测试,但是我不希望扩展方法的未来失败会破坏这个测试。嘲笑这个结果似乎是显而易见的选择,但是 Moq 似乎没有提供覆盖静态方法的方法(扩展方法的一个需求)。Moq 也有类似的想法。受保护和莫克。存根,但他们似乎没有为这种情况提供任何东西。是我漏掉了什么,还是我应该换个方式处理这件事?
下面是一个普通的 < em > “对非可覆盖成员的无效期望” 失败的例子。这是一个需要模仿扩展方法的坏例子,但是它应该这样做。
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 的粉丝,他们可能会建议我使用 Isoator 来代替: 我很感激你们的努力,因为 TypeMock 看起来可以蒙着眼睛喝醉酒来完成这项工作,但是我们的预算不会很快增加。