unit-testing - 如何模拟也属于目标类本身的方法?

标签 unit-testing mocking moq

假设我们正在测试一个 C 类,它有 2 个方法 M1 和 M2,其中 M1 在执行时调用 M2。

测试M2是可以的,但是我们如何测试M1呢?困难在于,如果我没有误解的话,我们需要模拟 M2。

如果是这样,我们如何在测试同一个类中定义的方法时模拟另一个方法?

[编辑]
C 类没有基类。

最佳答案

您可以通过设置 CallBase 来做到这一点。模拟上的属性到 true .

例如,如果我有这个类:

public class Foo
{
    public virtual string MethodA()
    {
        return "A";
    }
    public virtual string MethodB()
    {
        return MethodA() + "B";
    }
}

我可以设置 MethodA 并调用 MethodB:
[Fact]
public void RunTest()
{
    Mock<Foo> mockFoo = new Mock<Foo>();
    mockFoo.Setup(x => x.MethodA()).Returns("Mock");
    mockFoo.CallBase = true;

    string result = mockFoo.Object.MethodB();

    Assert.Equal("MockB", result);
}

关于unit-testing - 如何模拟也属于目标类本身的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907507/

相关文章:

python - 针对生产数据库的 Django 单元测试查询

java - 我如何模拟 Ignition.start()

unit-testing - MOQ 错误预期在模拟上调用一次,但为 0 次

unit-testing - 如何使用 Moq 设置简单的单元测试?

python - 使用 pytest 模拟 psycopg2 的正确方法是什么?

java - 创建和引用 stub 对象进行测试,而不需要 stub 将扩展的类

c# - 如何使用 IDataContext 接口(interface)运行存储过程?

java - Powermock - 尝试模拟方法实际上调用方法

.net - 如何在 Moq 中调用作为参数传递的谓词?

c# - 使用 Moq 模拟事件(基于事件的异步模式) - 如何对 UT 中的事件使用react?