C# 垫片上下文中的递归函数调用

C# 垫片上下文中的递归函数调用,c#,.net,microsoft-fakes,shim,C#,.net,Microsoft Fakes,Shim,给定一个递归方法,并使用Microsoft Fakes,我如何在第一次调用时调用实际方法并在递归调用时调用垫片实现 简化示例: public int RecursiveMethod(int param) { //method logic and calls RecursiveMethod(callParam); return result; } 现在,如果我使用ShimsContext并实现AllInstances.RecursiveMethod,我就无法得到我想要

给定一个递归方法,并使用Microsoft Fakes,我如何在第一次调用时调用实际方法并在递归调用时调用垫片实现

简化示例:

public int RecursiveMethod(int param)
{ 
    //method logic and calls
    RecursiveMethod(callParam); 
    return result;
}
现在,如果我使用
ShimsContext
并实现
AllInstances.RecursiveMethod
,我就无法得到我想要测试的实际方法。如果我使用
ShimsContext.executeWithoutShimmers(())
,我将退出Shimmers上下文,并且不能再伪造想要的零件


我假设我的逻辑中有一个流程,因为我对Microsoft Fakes是新手。

你可能会让它变得比需要的更复杂。使用输入参数和存根/填充来自递归方法的任何外部方法调用来驱动测试。您只想管理数据值,而不是重写代码。没有看到实际的递归方法,很难提供任何替代方法。哦,我明白了,这似乎是一个非常好的主意。你可能会使它变得比需要的更复杂。使用输入参数和存根/填充来自递归方法的任何外部方法调用来驱动测试。您只想管理数据值,而不是重写代码。没有看到实际的递归方法,很难提供任何替代方案。哦,我明白了,这似乎是一个非常好的主意。