gpt4 book ai didi

已被覆盖的 C# FakeItEasy 假方法

转载 作者:太空宇宙 更新时间:2023-11-03 16:27:33 25 4
gpt4 key购买 nike

我无法伪造我的类(class):

A类有一个方法:

protected virtual int method(int argument)
{
implementation
return int;
}

B 类扩展了 A 类并覆盖了方法:

protected override int method(int argument)
{
int result = base.method(argument);
implementation
return result + 1;
}

我需要模拟 B 类并测试 method 函数。问题是我需要避免调用 base.method(argument) 函数。我只需要测试我的方法实现,并模拟该函数以返回一个 int。

我如何使用 FakeItEasy 做到这一点?或者其他模拟框架?

更新

问题解决者:
制作功能:

int MethodCaller(int argument)
{
base.method(argument);
}

并在我的 B 类“方法”函数中执行它。比模拟 MethodCaller 函数

最佳答案

您可以使用辅助类 + 另一种辅助方法来完成,但我真的不喜欢这个解决方案:

public class A
{
protected virtual int method(int argument)
{
return argument;
}

public int result(int argument)
{
return method(argument);
}
}

public class B : A
{
protected override int method(int argument)
{
return baseMetod(0) + 1;
}

protected virtual int baseMetod(int argument)
{
return base.method(argument);
}
}

public class C : B
{
protected override int baseMetod(int argument)
{
return 5;
}
}

在测试中你可以调用 new C().Result(10)

关于已被覆盖的 C# FakeItEasy 假方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12069938/

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