如何使用Moq模拟扩展方法?
我正在编写一个依赖于扩展方法结果的测试,但我不希望该扩展方法的未来失败会破坏此测试。模拟这个结果似乎是显而易见的选择,但是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 });
至于任何可能暗示我使用Isolator的TypeMock迷们:我很欣赏这项努力,因为看起来TypeMock可以完成蒙住眼睛和醉酒的工作,但我们的预算不会很快增加。
白衣非少年
米琪卡哇伊
相关分类