gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:02:12 24 4
gpt4 key购买 nike

假设我们正在测试一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com