【问题标题】:Setting up Moq to ignore a virtual method设置 Moq 以忽略虚拟方法
【发布时间】:2010-03-04 00:01:49
【问题描述】:

我有一个具有虚方法的抽象类。如果以后的实现需要覆盖该功能,则该方法是虚拟的。

但是,Moq 代理了所有虚拟方法,因此我似乎无法测试编写的实际代码,而是使用该方法的 Mock 设置(当前返回默认值)。

示例摘要:

public abstract SomeAbstract
{
    public abstract Format(IFormatProvider provider, string format)
    {
          // does some stuff i need to test
    }
}

我的 NUnit 测试:

[Test]
public void Should_Set_Format_State()
{
   Mock<SomeAbstract> mock = new Mock<SomeAbstract>();
   mock.Object.Format(CultureInfo.CurrentCulture, "format string");

   // do tests to make sure Format correctly changed the object's state
}

如何设置我的 Mock 对象以让我的虚拟 Format 方法工作,而不必从方法中删除 virtual?!也许我在这种情况下滥用了嘲笑的概念。

【问题讨论】:

  • 有趣的问题,我学到了一些东西!耶。

标签: c# mocking moq


【解决方案1】:

我相信在模拟上设置“CallBase = true”会起作用。请参阅Quick Start 的“自定义模拟行为”部分

【讨论】:

    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    相关资源
    最近更新 更多