我的课堂上有问题:
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函数
答案 0 :(得分:0)
您可以使用辅助类+一个辅助方法,但我真的不喜欢这个解决方案:
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)