为同一个方法的两次调用设置两个不同的返回值
本文关键字:两个 返回值 设置 调用 同一个 两次 方法 | 更新日期: 2023-09-27 18:03:18
假设我有以下场景:
public interface IFoo
{
int GetNextNumber();
}
public class Foo : IFoo
{
public int GetNextNumber()
{
// returns some next number. The logic of getting the next number is not importaint
}
}
现在,这就是我要测试的方法:
public void MethodToTest(IFoo foo)
{
int first = foo.GetNextNumber();
int second = foo.GetNextNumber();
}
例如,我如何设置将传递给MethodToTest的模拟,以便该方法的第一次调用返回1,第二次调用返回2。棘手的部分是该方法的两次调用是无法区分的,所以我不知道如何在某种"执行顺序"中设置它们
EDIT:我正在使用Moq
您可以创建一个类来实现您的接口,并在每次调用该方法时增加一个值
public class TestFoo : IFoo
{
private static int i;
public int GetNextNumber()
{
return i++;
}
}
由于您使用的是Moq框架,因此您甚至不需要创建自定义类。
的例子:
int i = 1;
Mock<IFoo> MockFoo = new Mock<IFoo>();
MockFoo.Setup(x => x.GetNextNumber()).Returns(i++);