将模拟对象(Moq)与在C#中使用反射的方法一起使用?

将模拟对象(Moq)与在C#中使用反射的方法一起使用?,c#,.net,unit-testing,wcf,moq,C#,.net,Unit Testing,Wcf,Moq,因此,我有一个用例,其中基本控制器类中的泛型方法接收一组服务,并根据URI或具有版本号的头返回正确的服务(V1、V2等)。在下面 protected T GetService<T>(List<T> services) { return URI.Contains("v1") ? services.FirstOrDefault(x => x.GetType().ToString().Contains("1")) :

因此,我有一个用例,其中基本控制器类中的泛型方法接收一组服务,并根据URI或具有版本号的头返回正确的服务(V1、V2等)。在下面

protected T GetService<T>(List<T> services)
        {
            return URI.Contains("v1") ? services.FirstOrDefault(x => x.GetType().ToString().Contains("1")) :
                                        services.FirstOrDefault(x => x.GetType().ToString().Contains(GetVersionFromHeader(WebContext)));
        }
protectedt GetService(列表服务)
{
返回URI.Contains(“v1”)?services.FirstOrDefault(x=>x.GetType().ToString().Contains(“1”):
services.FirstOrDefault(x=>x.GetType().ToString().Contains(GetVersionFromHeader(WebContext));
}
这种方法在实践中工作得非常好,因为我们的服务都有其版本号,例如[ServiceName]V1、[ServiceNameV2]等等

现在的问题是,这破坏了许多现有的单元测试,因为当
服务的集合
是模拟接口的集合,每个接口都返回一种类型的
Castle.proxy.ObjectProxy
时,此方法通常返回null。如果我必须删除四分之一的单元测试,我真的无法推动这些更改。我可能可以硬编码一个条件来检查这是否是一个测试,但我不希望提交这样的黑客修复

如果有人有经验或想法从使用反射产生的问题中检索实际的模拟类型或解决方法,然后用模拟对象测试这些方法,我们将不胜感激

谢谢