c# - 如何使用最小起订量测试抽象类中的具体方法?

标签 c# unit-testing mocking moq abstract-class

过去,当我想模拟一个抽象类时,我只是在扩展抽象类的代码中创建一个模拟类,然后在我的单元测试中使用该类...

public abstract class MyConverter : IValueConverter
{
    public abstract Object Convert(...);

    public virtual Object ConvertBack(...) { ... }
}

private sealed class MockedConverter : MyConverter { ... }

[TestMethod]
public void TestMethod1()
{
    var mock = new MockedConverter();

    var expected = ...;
    var actual = mock.ConvertBack(...);

    Assert.AreEqual(expected, actual);
}

我想养成使用 Moq 的习惯。我不确定我将如何使用 Moq 来测试我的抽象类的默认返回值。这里有什么建议吗?

最佳答案

如果将 CallBase 设置为 true,它将调用基类实现。

var mock = new Mock<MyConverter> { CallBase = true };

参见 Customizing Mock Behavior Customizing Mock Behaviour快速入门部分。

Invoke base class implementation if no expectation overrides the member (a.k.a. "Partial Mocks" in Rhino Mocks): default is false.

关于c# - 如何使用最小起订量测试抽象类中的具体方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7691796/

相关文章:

c# - Nlog 根据变量保存日志文件

c# - 忽略时区偏移

azure - 如何测试 Azure Pipelines

unit-testing - 使用自定义编解码器的 Groovy/Grails 单元测试错误

python - 将我的函数修补为随机 randint 函数

c# - Windows Phone8 中的模拟框架

mocking - Mockito 中的@SpyBean 和@MockBean 有什么区别?

java - 使用 JMockit 中的现有类模拟类(替换 `redefineMethods` )

javascript - Webapi 导出到 excel 下载的损坏文件

c# - 如何在静态类中创建通用静态字典