使用MS Fakes,有没有办法为第一次调用stubbed方法提供方法体,并为同一方法的第二次调用提供不同的方法体?
我正在测试一个调用classA.MyMethod()两次的方法。我在单元测试中存在classA.MyMethod()。但这意味着对MyMethod()的两次调用都将返回相同的内容。
我想要使用存根方法来执行此操作:
public void MainMethod()
{
var result1 = classA.MyMethod(); //return null
...
var result2 = classA.MyMethod(); //return x
}
答案 0 :(得分:1)
您可以修改方法调用中的垫片,在第一个垫片完成后替换它:
[TestMethod]
public void TestMethod1()
{
using (ShimsContext.Create())
{
Something.Fakes.ShimClassA.MethodA = () =>
{
Something.Fakes.ShimClassA.MethodA = () =>
{
return "Second";
};
return "first";
};
var f = Something.ClassA.MethodA(); // first
var s = Something.ClassA.MethodA(); // second
var t = Something.ClassA.MethodA(); // second
}
var orig = Something.ClassA.MethodA(); // This will use the original implementation of MethodA
}